XML要素と属性の比較
XML 要素 と 属性
XML では、いつ属性を使用するか、いつサブ要素を使用するかについての規定はありません。
要素と属性の使用
データは子要素または子属性に保存できます。
これらの例を見てみましょう:
<名>アンナ</名>
<姓>スミス</姓>
</人>
<性別>女性</性別>
<名>アンナ</名>
<lastname>Smith</lastname>
</person>
最初の例では、「性別」が属性です。後者の例では、「sex」が子要素です。しかし、どちらも同じ情報を提供します。
いつ属性を使用するか、いつ子要素を使用するかについての特別なルールはありません。私の経験では、HTML では属性がよく使われますが、XML ではサブ要素を使用するとデータ情報のように感じられます。
私の好みの方法です
データを子要素に保存するのが好きです
次の 3 つの XML ドキュメントには、まったく同じ情報が含まれています:
この例では、「date」属性が使用されています:
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>
この例では、「日付」要素が使用されています:
<日付>2002/12/11</日付>
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>
この例では、拡張された「日付」要素を使用しています: (これは私のお気に入りの方法です):
<日付>
<日>12日>
<月>11月>
<年>2002年年>
</日付>
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>
属性の使用は避けるべきですか?
属性の使用は避けるべきですか?
一部の属性には次の問題があります:
属性には複数の値を含めることはできません(子要素は可能)
属性は簡単に拡張できません(将来の要件の変更に備えて)
属性は構造を記述することができません(子要素は可能)
属性プログラムの操作がより困難になる コード
属性値は DTD に対してテストするのが容易ではない
属性をデータ コンテナとして使用する場合、最終的な XML ドキュメントの読み取りと保守が困難になります。 要素 を使用してデータを記述してみてください。に データを説明する。提供されたデータが無関係な情報である場合にのみ属性を使用することをお勧めします。
次のようにならないでください (これは XML が使用されるべきことではありません):
to="Tove" from= "ジャニ"Heading="リマインダー"
body="今週末は私を忘れないでください!">
</note>
属性ルールの例外
常に別のルールがあります
属性に関するルールには例外があります。
指定したIDに要素が適用される場合があります。これらの ID アプリケーションは、HTML と同じ状況の多くで、XML 要素に NAME または ID 属性としてアクセスできます。次の例は、このアプローチを示しています:
<note id="p501">
<to>トーベ</to>
<from>ジャニ</from>
<Heading>リマインダー</Heading>
<body>今週末は私を忘れないでください!</body>
</note>
<note id="p502">
<to>ジャニ</to>
<from>トーベ</from>
<Heading>Re: リマインダー</Heading>
<body>しません!</body>
</note>
</messages>
上の例の XML ファイルでは、ID はデータの一部ではなく、さまざまなメモを識別するための単なるカウンター、または一意の識別子です。
ここで言いたいのは、メタデータ(データに関するデータ)は属性として保存し、データ自体は要素として保存する必要があるということです。