4. ルート要素

ルート要素

XML文書はdocument生成規則に従う。

[1] document ::= prolog element Misc*

このときラベルprologで記述するものをXML宣言のみとし、ラベルMiscは任意だから記述しないと仮定する。 すると、残りはラベルelementのみとなる。これをルート(ルート要素)あるいは文書要素と言う。

ルートは、XML文書中にただ1つだけ存在し、他の要素の内容に含まれない要素である。

要素

要素の書き方は、次のように定義されている。

[39] element ::= EmptyElemTag
                 | STag content ETag  [WFC: Element Type Match]
                                      [VC: Element Valid]

要素は空要素(ラベルEmptyElemTagによる空タグ)開始タグ(ラベルSTag)終了タグ(ラベルETag)内容(ラベルcontent)を囲むタイプの2種類に分類される。 この定義で[WFC: ]の部分には整形式制約条件が、[VC: ]の部分には妥当性制約条件が記述されている。 要素の整形式制約条件は、開始・終了タグの名前が一致しなければならないことを意味する。 妥当性制約条件については、省略する。

  • 要素は、空タグまたは開始・終了タグによって記述される。
  • 開始・終了タグを記述する場合、その名前は同じである。

名前

XMLでは、要素名や属性名など「名前(ラベルName)」を記述する部分がある。この名前は次のように定義されている。

[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'
                 | CombiningChar | Extender
[5] Name     ::= (Letter | '_' | ':') (NameChar)*

ラベルLetterの定義は使用できる文字コード(Unicode)が指定されている。主なものとしては半角英字、ひらがな、全角カタカナ、漢字などがある。 ラベルDigitは、数字が定義されている。ラベルCombiningCharとラベルExtenderでは、それ以外の文字が定義されている。

また、上記の定義には記述されていないが、仕様書では、大文字小文字の区別なく、 「xml」で始まる名前は予約されているため使うことができない。

  • 先頭は字(Letter; 一般の文字、「_」、「:」)で始まる。
  • 2文字目以降には字、数字、「・」、「.」、「−」、「_」、「:」を記述することができる。

開始タグの書き方

開始タグはラベルSTagで定義されている。

[40] STag ::= '<' Name (S Attribute)* S? '>'  [WFC: Unique Att Spec]

開始タグを記述した場合、必ず対応する終了タグを記述する。 また、ラベルNameを要素名と呼ぶが、開始・終了タグの要素名は一致しなければならない。 なお、定義の中で属性に関する部分[(S Attribute)* と 整形式制約条件]については、後述するので今は無視している。

  • 必ず終了タグとペアで使用する。
  • 開始・終了タグの要素名は同じ名前になる。
  • 記号<に続けて要素名を記述する。
  • 最後は記号>で終わる。
  • 要素名と記号>の間には空白文字を記述できる。

終了タグの書き方

終了タグはラベルETagで定義されている。

[42] ETag ::= '</' Name S? '>'
  • 必ず開始タグとペアで使用する。
  • 開始・終了タグの要素名は同じ名前になる。
  • 記号</に続けて要素名を記述する。
  • 最後は記号>で終わる。
  • 要素名と記号>の間には空白文字を記述できる。

内容の書き方

開始タグと終了タグで囲まれた間に記述する内容はラベルcontentで定義されている。

[43] content ::= CharData? ((element | Reference
                 | CDSect | PI | Comment) CharData?)*

主なものとしてはラベルelementで定義された要素、ラベルCharDataで定義された文字を記述することができる。 文字を記述する場合、注意としては「<」、「>」、「&」、「”」、「’」の各記号はそのまま記述することができない そのため実体参照と呼ばれる方法を使って記号を表現する。

文字実体参照
&lt;
&gt;
&amp;
&quot;
&apos;

空タグの書き方

空タグはラベルEmptyElemTagで定義されている。

[44] EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
                                     [WFC: Unique Att Spec]
  • 空タグは内容を持たない。
  • 記号<に続けて要素名を記述する。
  • 最後は記号/>で終わる。
  • 要素名と記号/>の間には空白文字を記述できる。

ページの先頭に戻る


Copyright © 2006 御隠居 (滄洲). All Rights Reserved.