XML属性
XML要素は、HTMLと同じように属性を持つことができます。
属性は、特定の要素に関連するデータを含むように設計されています。
XML属性は引用する必要があります
属性値は常に引用符で囲む必要があります。一重引用符または二重引用符のいずれかを使用できます。
人の性別の場合、<person>要素は次のように記述できます。
<person gender="female">
またはこのように:
<person gender='female'>
属性値自体に二重引用符が含まれている場合は、次の例のように一重引用符を使用できます。
<gangster name='George "Shotgun" Ziegler'>
または、文字エンティティを使用できます。
<gangster name="George "Shotgun" Ziegler">
XML要素と属性
これらの2つの例を見てください。
<person gender="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<gender>female</gender>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
最初の例では、性別が属性です。最後の例では、性別が要素です。どちらの例も同じ情報を提供します。
XMLで属性を使用する場合や要素を使用する場合についての規則はありません。
私の好きな方法
次の3つのXMLドキュメントには、まったく同じ情報が含まれています。
最初の例では、日付属性が使用されています。
<note date="2008-01-10">
<to>Tove</to>
<from>Jani</from>
</note>
2番目の例では、<date>要素が使用されています。
<note>
<date>2008-01-10</date>
<to>Tove</to>
<from>Jani</from>
</note>
3番目の例では、展開された<date>要素が使用されています:(これは私のお気に入りです):
<note>
<date>
<year>2008</year>
<month>01</month>
<day>10</day>
</date>
<to>Tove</to>
<from>Jani</from>
</note>
XML属性を避けますか?
属性を使用する際に考慮すべき点は次のとおりです。
- 属性に複数の値を含めることはできません(要素は含めることができます)
- 属性にツリー構造を含めることはできません(要素に含めることができます)
- 属性は簡単に拡張できません(将来の変更のために)
このようになってはいけません:
<note day="10" month="01" year="2008"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
メタデータのXML属性
ID参照が要素に割り当てられる場合があります。これらのIDは、HTMLのid属性とほぼ同じ方法でXML要素を識別するために使用できます。この例はこれを示しています:
<messages>
<note id="501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not</body>
</note>
</messages>
上記のid属性は、さまざまな音符を識別するためのものです。メモ自体の一部ではありません。
ここで言いたいのは、メタデータ(データに関するデータ)は属性として保存し、データ自体は要素として保存する必要があるということです。