XML技術マニュアルログイン
XML技術マニュアル
著者:php.cn  更新時間:2022-04-14 15:57:53

XML属性



XML 要素には、HTML と同様の属性があります。

属性は、要素に関する追加情報を提供します。


XML 属性

HTML では、属性は要素に関する追加情報を提供します:

<img src="../style/images/computer.gif">
<a href="demo. html ">

属性は、データの一部ではない情報を提供することがよくあります。次の例では、ファイル タイプはデータとは関係ありませんが、この要素を処理する必要があるソフトウェアにとっては重要です:

<file type="gif">computer.gif</file>


XML 属性は引用符で囲む必要があります

属性値は引用符で囲む必要がありますが、一重引用符と二重引用符の両方を使用できます。たとえば、人の性別の person 要素は次のように書くことができます:

<person sex="女性">

または次のように書くこともできます:

<person sex='雌' >

属性値自体に二重引用符が含まれている場合は、次の例のように一重引用符を使用できます:

<gangster name='George "Shotgun" Ziegler'>

または文字エンティティを使用できます。

<ギャングスター名="ジョージ「ショットガン"ジーグラー」>


XML要素と属性

これらの例を参照してください:

<person sex="女性">
​ <名>アンナ</名>
​ <姓>スミス</姓>
</人>

<人>
​ <性別>女性</性別>
​ <名>アンナ</名>
​ <姓>スミス</姓>
</人>

第一に、性別は属性です。 2番目の例では、セックスは要素です。どちらのインスタンスも同じ情報を提供します。

いつ属性を使用するか、いつ要素を使用するかを指示するルールはありません。私の経験では、HTML では属性を使用すると便利ですが、XML では属性の使用を避ける必要があります。情報がデータによく似ている場合は、要素を使用します。


私のお気に入りの方法

次の 3 つの XML ドキュメントにはまったく同じ情報が含まれています:

date 属性は最初の例で使用されています:

<note date="10/01/2008"> ;
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>

2 番目の例では、日付要素を使用します:

<note>
<日付>2008/10/01</日付>
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>

3 番目の例では、拡張日付要素を使用しています (これは私のお気に入りです):

< ;note>
<日付>
​ <日>10
​ <月>01
​ <年>2008年
</日付>
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>


XML 属性を避けますか?

属性の使用によって生じるいくつかの問題:

  • 属性には複数の値を含めることはできない(要素には含めることができる)

  • 属性にはツリー構造を含めることはできない(要素には含めることができる)

  • 属性は簡単に拡張できない(将来の変更に備えて) )

プロパティは読み取りと保守が困難です。要素を使用してデータを記述するようにしてください。代わりに、属性を使用してデータに依存しない情報を提供します。

次のような愚かなことはしないでください (これは XML の使用方法ではありません):

<note day="10" month="01" year="2008"
to="Tove" from= "ジャニ"Heading="リマインダー"
body="今週末は私を忘れないでください!">
</note>


メタデータの XML 属性

場合によっては、ID 参照が要素に割り当てられます。これらの ID インデックスは、HTML の id 属性と同じ方法で XML 要素を識別するために使用できます。この例は、これを示しています:

<messages>
​ <note id="501">
​​ <to>トーベ</to>
​​ <from>ジャニ</from>
​​ <Heading>リマインダー</Heading>
​​ <body>今週末は私を忘れないでください!</body>
​ </note>
​ <note id="502">
​​ <to>ジャニ</to>
​​ <from>トーベ</from>
​​ <Heading>Re: リマインダー</Heading>
​​ <body>しません</body>
​ </note>
</messages>

上記の id 属性は単なる識別子であり、さまざまなメモを識別するために使用されます。ノートデータの一部ではありません。

ここで私たちが伝えようとしている考え方は、メタデータ (データに関するデータ) は属性として保存され、データ自体は要素として保存されるべきであるということです。