XML要素には、HTMLのように属性があります。
属性(Attribute)は、要素に関する追加情報を提供します。
目次
XML属性
HTMLにも、属性は要素に関する追加情報を提供します。
<img src="computer.gif">
<a href="demo.html">
属性は通常、データに所属しない情報を提供します。 次の実例では、ファイルの種類はデータとは関係ありませんが、この要素を処理する必要があるソフトウェアにとって重要です。
<file type="gif">computer.gif</file>
XML属性は引用符で囲む必要がある
属性値は引用符で囲む必要がありますが、一重引用符と二重引用符どちらも使用できます。例えば、人の性別、person要素は下記のように記入できます。
<person sex="female">
このように記入してもいいです。
<person sex='female'>
属性値が二重引用符で囲んでいる場合には、下記のように一重引用符を使用できます。
<gangster name='George "Shotgun" Ziegler'>
文字実体参照も使用できます。
<gangster name="George "Shotgun" Ziegler">
XML要素vs.属性
下記の実例をご覧ください。
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
最初の実例では、sexが属性です。 2番目の実例では、sexが要素です。 どちらの実例でも同じ情報を提供します。
属性と要素を使用するタイミングを指定するルールはありません。著者の経験では、HTMLでは属性は非常に便利ですが、XMLでは属性の使用をできるだけ避ける必要があります。情報がデータに似ている場合は、要素を使用しましょう。
著者が推奨の使い方
次の3つのXMLドキュメントには、まったく同じ情報が含まれています。
最初の実例では、date属性が使用されています。
<note date="10/01/2008">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
2番目の実例では、date要素が使用されています。
<note>
<date>10/01/2008</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
3番目の実例では、拡張のdate要素が使用されています。(推奨)
<note>
<date>
<day>10</day>
<month>01</month>
<year>2008</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
XML属性を避ける理由
下記のは属性によって引き起こされるいくつかの問題:
- 属性に複数の値を含めることはできません。(要素は含めることができます)
- 属性にツリー構造を含めることはできません。(要素に含めることができます)
- 属性は拡張しにくいです(未来の変更)
属性の読み取りと維持は難しいです。要素を使用してデータを説明してみてください。その代わりに、属性のみを使用して、データに関係のない情報を提供します。
このやり方は推奨しません。(これは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インデックスは、XML要素を識別するために使用でき、HTMLの役割はid属性と同じです。下記の実例は、この状況を示しています。
<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属性は単なる識別子であり、さまざまなメモを識別するために使用されます。 メモデータに属しません。
今まで説明したい考え方は、メタデータ(データに関するデータ)を属性として保存し、データ自体を要素として保存する必要があるということです。
コメントを残す