この XML データの正しい形式はどれでしょうか。それらは同等でしょうか、それとも 2 つの間にトレードオフがあるのでしょうか。
1.
<sitemap>
<category name="Animals">
<section title="Dogs">
<page url="/pics/greatdane.jpg" title="Great Dane"/>
</section>
</category>
</sitemap>
2.
<sitemap>
<page>
<category>Animals</category>
<section>Dogs</section>
<title>Great Dane</title>
<url>/pics/greatdane.jpg</url>
</page>
</sitemap>
最初の例をスタイルシートで実装しましたが、問題なく動作しているようですが、正しい形式が何であるかわかりません。
ベストアンサー1
属性と要素の問題は、10 年近く前から存在しており、正しい答えはありません。代わりに、違いを考慮して、どちらを使用するかを決定できるはずです。
- DTD または XML スキーマを使用して要素にこれを強制することはできますが、属性のインスタンスは 1 つしか存在できません。
- 属性は順序付けられていません。要素は順序付けられていません。
子要素がない場合、属性を使用すると構文がより簡潔になります。比較:
<page name="サイトマップ"/>
に:
<page>
<name>Sitemap</name>
</page>
どちらが好みかは分かっています。
- DTD は XML スキーマではあまり使用されていないため、現時点ではあまり関係ありませんが、念のため追加しておきます。DTD では、属性に対してはデフォルト値 (暗黙的) が許可されますが、要素に対してはそのようなメカニズムはありません。
- 要素は要素であるため、独自の子と属性を持つことができます。属性は当然ながら持つことができません。
したがって、あなたの例では、最も内側の<page>
要素に URL 属性があります (ただし、何らかの理由で画像になっています。プレビュー アイコンでしょうか。そうであれば、属性名は誤解を招きます)。Web ページには (通常) 1 つの URL しかないため、これは属性になり得るもののよい例になります。
一方、ページに画像を一覧表示したい場合は、明らかに複数の画像が存在する可能性があるため、そのための要素が必要になります。
しかし、結局のところ、ほとんどの場合、正しい答えも間違った答えもなく、それは主にスタイルの問題です。