ベストプラクティス: XML 属性と XML 要素 - 要素と属性はいつ使用すればよいですか? [重複] 質問する

ベストプラクティス: XML 属性と XML 要素 - 要素と属性はいつ使用すればよいですか? [重複] 質問する

この 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 しかないため、これは属性になり得るもののよい例になります。

一方、ページに画像を一覧表示したい場合は、明らかに複数の画像が存在する可能性があるため、そのための要素が必要になります。

しかし、結局のところ、ほとんどの場合、正しい答えも間違った答えもなく、それは主にスタイルの問題です。

おすすめ記事