要素
要素は XML ドキュメントの中心をなすものであり、プログラムやスタイル シートで操作できる構造を形成します。 要素は、情報に名前の付いたセクションを示し、要素の名前、開始位置、終了位置を示すマークアップ タグを使用して作成されます。
要素には属性の名前と値を含めることもできます。これにより内容に情報を追加することができます。 詳細については、「属性」を参照してください。
要素の名前
すべての要素には名前が必要です。 要素名は大文字と小文字が区別され、文字かアンダースコアで始まらなければなりません。 要素名には、文字、数字、ハイフン、アンダースコア、およびピリオドを含めることができます。
注 : |
---|
コロンは、名前空間における使用のために予約されています。Unicode 文字の中で使用可能な文字と数字の詳細については、『XML 仕様』の「付録 B」を参照してください。 |
開始タグ、終了タグ、および空要素タグ
タグは要素の内容 (内容がある場合) の周囲の境界を規定します。
開始タグは要素の始まりを示し、次の一般構文を使用します。
<elementName att1Name="att1Value" att2Name="att2Value"...>
属性を持たない要素では、開始タグは次のように短縮されます。
<elementName>
終了タグは要素の終わりを示し、属性を含むことはできません。 終了タグは常に次の形となります。
</elementName>
一般に、要素は開始タグと終了タグ、およびその間のすべてを含むものと考えられます。
<person><givenName>Peter</givenName> <familyName>Kress</familyName></person>
この場合、<person>
要素は他の 2 つの要素、<givenName>
と <familyName>
およびそれらを区切るスペースを含みます。 <givenName>
要素はテキスト Peter
を含み、<familyName>
要素はテキスト Kress
を含みます。
空要素タグは、テキストの内容を含まない要素を表すために使用されます。しかし空要素タグに属性を含めることは可能です。 HTML の img
要素と br
要素は空要素の例です。 空要素タグは、ドキュメントの開始タグと終了タグの間に何も内容がない場合に短縮形として使用することができます。 空要素タグは開始タグのように見えますが、最後の > の前に (/) が付きます。
<elementName att1Name="att1Value" att2Name="att2Value".../>
XML では、開始タグと終了タグ、そして両者の間に空白や内容を含めないことで空要素を表すことができます。たとえば <giggle></giggle>
。または空要素タグを、たとえば <giggle/>
のように使用することもできます。 この 2 つの形式は XML パーサーで同じ結果となります。
要素の関係
要素間の関係は、家族や木にたとえて表現されます。 XML ドキュメントには、ルート要素を 1 つだけ含めることができます。 ルート要素の前後に、宣言、処理命令、コメント、空白など他のマークアップを置くことはできますが、ルート要素にはドキュメント本体の部分と考えられる内容すべてを含む必要があります。 たとえば次のコードは、ルート要素が <person>
である XML ドキュメントとすることができます。
<person><givenName>Stephanie</givenName> <familyName>Bourne</familyName></person>
次のフラグメントは複数のルート要素を持つので、XML ドキュメントとすることはできません。
<givenName>Stephanie</givenName>
<familyName>Bourne</familyName>
注 : |
---|
このドキュメント フラグメントは、XML ドキュメントの一部としては有用ですが、これだけでパーサーに渡すことはできません。パーサーは、2 番目の要素か要素外のテキストを見つけたときに、エラーを報告します。 |
木のたとえでは、枝先の葉のように、リーフは他の要素をまったく含まない要素を意味します。 リーフ要素は、一般にテキストのみを含むか、何も含まない要素です。リーフ要素は一般に空要素かテキストです。 ドキュメント マップで、本を記述するすべてのテキストはリーフ要素に格納されています。テキストそれ自体がリーフ要素です。
親、子、祖先、子孫、兄弟などの家族のたとえは、ドキュメント全体とは限らず、要素間の関係を相互に相対的に記述するために使用されます。 次の抽象的なサンプル ドキュメントは要素間の関係を示すものです。
<a>
<b>
<c>
<d/><e/><f/>
</c>
</b>
</a>
<a>
要素は <b>
要素を含み、それが <c>
要素を含み、それが <d>
、<e>
、そして <f>
要素を含みます。 木の例に従うと、<a>
はルート要素であり、<d>
、<e>
、および <f>
はリーフ要素です。 <b>
および <c>
は幹や枝と考えることができますが、これらの言葉はあまり用いられません。
家族のたとえでは、さらに多くのレベルを記述することができます。 このドキュメントで兄弟は <d>
、<e>
、および <f>
要素だけで、すべてが <c>
要素に含まれています。 <c>
要素は <d>
、<e>
、および <f>
要素の親であり、<d>
、<e>
、および <f>
要素は <c>
要素の子です。 同様に、<b>
要素は <c>
要素の親であり、<c>
要素は <b>
要素の子です。また <a>
要素は <b>
要素の親であり、<b>
要素は <a>
要素の子です。
祖先と子孫は、親子と同じように定義されますが、これらは直接含まれたり、直接含んだりする必要がないところが異なります。 <a>
要素は <b>
要素の親であり、ドキュメント内のすべての要素の祖先です。 <d>
、<e>
、および <f>
要素は <a>
要素、<b>
要素、<c>
要素の子孫です。