要素 (Element)という言葉自体はHTML時代から使われていたようですが、日本ではあんまり浸透している気がしないので、一応簡単な説明をしておきます。
要素とは、文字通りXHTML文書を構成する一つ一つのものを指します。基本的に、文書のタイトル、見出し、段落、強調などの、文書の構成を示すもの、論理的な意味を示すものを指しますが、中には物理的な見栄えを指定する(淘汰されるべき)ものもまだ残っています。
HTMLを知っている人なら、タグと言えば想像しやすいかも知れません。例えば、次のようなXHTML文書の一部を考えてみます。
[プログラムコード開始]
[プログラムコード終了]
上の例で、<p>
はp要素の開始を示すので開始タグ、</p>
はp要素の終了を示すので終了タグと呼ばれます。p要素は、開始タグ<p>、終了タグ</p>、及びそれに挟まれた部分全体です。また、両タグに挟まれた部分をp要素の内容と言います。内容として更に何らかの要素を持つ場合子と、子が更に子を持つ場合は孫と、子、孫、曾孫……を総称して子孫と呼ぶ事があります。
ところで、要素と言う言葉は二通りに使われます。
両者を区別する為に、2の意味では「要素型」「要素タイプ」などと呼ばれる事もありますが、このリファレンスでは特に書き分けません。
要素が含まれるコンテントセットを示します。一つだけに所属しているものもあれば、どこにも所属していないものもあったり、要素によっては複数に所属している事もあります。
コンテントセットは、コンテントセットについてで説明されているように、要素の内容を表現する時に使われる概念です。
要素が内容として包含できるものが列挙されています。例えばhtml要素は、head要素とbody要素を内容として持つ事ができ、どちらも必須です。p要素の場合は、PCDATA(文字列)とInlineコンテントセットに含まれる要素を内包する事ができます。
また、img要素やcol要素のように、内容が無い要素は空要素と呼ばれ、<col span="3"/>のような特殊な書き方をします。
要素の内容として許される書き方を、正規表現を使って表したものです。区切りにはコンマを使っていますが、コンマまで書いてはいけません。
空要素の場合はEMPTYと書かれます。
関連のある属性を集めて、一つのグループにしたものです。Core、I18N、Eventsなどがあり、それぞれ幾つかの属性を含んでいます。属性コレクションを持つ要素は、その属性コレクションが含んでいる全ての属性を持つ事になります。例えばhtml要素はI18N属性コレクションを持っていますが、この事は、xml:lang、dirの二つの属性を持つ事と等価です。
ちなみに、各要素の解説ページでは、属性コレクションの属性は一般属性として、それ以外の属性は固有属性として扱っています。
属性の値として書きうるデータタイプです。なお、属性によっては、選択式のものがあります。例えば、form要素のmethod属性は「get」か「post」の何れかのみが書きうる値で、他の言葉を書く事はできません。
また、select要素のmultiple属性のような、属性名と取りうる属性値が全く同じ属性が幾つか存在します。このような属性は、HTML時代に<select multiple>……と書かれていたものが、XHTMLになってXMLの規則(属性名を省略してはならない)を守る為に、強制的に属性名を持たされたものです。ちょっと冗長ですが、きちんと書きましょう。
端的に言うと、属性値の種類(どのような内容を書くべきか)に対して、判りやすい名前を付けたものです。例えば、id属性はIDデータタイプで、id属性には文書中で唯一無二の識別子を指定する事が判ります。また、href属性はURIデータタイプで、リソースのURIを書くようになっています。
根源型とは、記述の仕方──どんな文字をどういう組み合わせで使っていいのか、という事を示すものと言えます。
例えば、LinkTypesデータタイプの根源型はNMTOKENSです。LinkTypesと聞くと、リソースとリソースの関係を示す為に使われる事は判るのですが、それだけでは具体的な書き方が判りません。そこで根源型を調べると、LinkTypesの場合NMTOKENSですから、スペースで区切ってNMTOKENを書いていけばいい事が判ります。
扱われ方の面で関連のある要素を集めて、一つのグループにしたものです。例えば、見出しを示すh1、h2、h3、h4、h5、h6の六つの要素(このリファレンスではまとめてhn要素と読んでいますが)は、Headingコンテントセットに含まれます。また、フォームのコントロールであるinput、button、selectなどの要素はFormctrlコンテントセットに入っています。
コンテントセットという概念は、要素の内容を表す時に役に立ちます。例えば、em要素はPCDATAデータタイプ、Inlineコンテントセットを内容に持ちます。Inlineにはspanやdfn、codeなどの要素が含まれますから、em要素は文字列とそれらの要素を内包する事ができます。また、div要素は内容としてPCDATAデータタイプ及びFlowコンテントセットを持ち得ます。Flowコンテントセットは、Heading、Block(Formを含む)、List、Inline(Formctrlを含む)の全て、という凄いコンテントセットですから、div要素はXHTML 1.1に存在する殆ど全ての要素を内包する事ができるのです。
意味の面で関連のある要素や属性を集めて、一つのグループにしたものです。こう書くとコンテントセットに似ているようですが、モジュールの概念はコンテントセットのそれとは方向性が違います。XHTML文書を書く上で必ずしも必要になるものではないので、それほど気にしなくていいかも知れません。
そもそもXHTML 1.1は、モジュールを基にして作られたXHTMLでした。モジュールとは、XHTMLの要素や属性を、意味や表現手段の観点から幾つかのグループに分けたものです。モジュールの概念を導入すると、例えばXHTMLファミリのそれぞれのバージョンが言語仕様を定義する時、「XHTML Cisab 1.0はStructure、Text、Hypertext、Listの四つのモジュールを使用する」というように定義が楽になったりとか、ユーザーエージェントがXHTMLに対応する時、「Ciasom 1.0はStructureからListまでと、Forms及びTablesの六つのモジュールに対応する」というように、対応すべき要素を取捨選択できるようになります。
XHTML 1.1では、そんな数多くあるモジュールの中から、古く、旧式のモジュールを幾つか除いたほか、多くのモジュールを選んでサポートしています。モジュール一覧に載っているのがそれですが、先程書いたように、XHTML文書を書く分にはそれほど必要ではありません。しかし、意味の上で関連性のある要素をまとめたものですから、理解の助けにはなるでしょう。
| [XHTML 1.1 Referenceの基礎知識] | ||
|---|---|---|
| Published | : | 2006-03-26T09:00:00+09:00 |
| Last Modified | : | 2007-02-27T23:15:24+09:00 |
| Table of Contents | : | XHTML 1.1 リファレンス |
| Verified with | : |
|