W3Schools から XML 属性について学んでいます。
著者は次のことを言及しています(強調は私のものです):
XML 要素と属性
<person sex="female"> <firstname>Anna</firstname> <lastname>Smith</lastname> </person>
<person> <sex>female</sex> <firstname>Anna</firstname> <lastname>Smith</lastname> </person>
最初の例では、性別が属性です。最後に、セックスは要素です。どちらの例も同じ情報を提供します。
いつ属性を使用し、いつ要素を使用するかについての規則はありません。属性は HTML で便利です。XML では、それらを避けることをお勧めします。代わりに要素を使用してください。
XML 属性を避けますか?
属性の使用に関する問題のいくつかは次のとおりです。
- 属性に複数の値を含めることはできません (要素は可能です)
- 属性にツリー構造を含めることはできません (要素には含めることができます)
- 属性は簡単に拡張できません (将来の変更のために)
属性は読み取りと保守が困難です。データには要素を使用します。データに関連しない情報には属性を使用します。
では、著者の見解は有名なものでしょうか?それとも、これが XML のベスト プラクティスでしょうか?
XML の属性は避けるべきですか?
W3Schools は次のことにも言及しました (強調は私のものです)。
メタデータの XML 属性
要素に ID 参照が割り当てられることがあります。これらの ID を使用して、HTML の ID 属性とほぼ同じ方法で XML 要素を識別できます。この例は、次のことを示しています。
<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 は、異なるメモを識別するための単なる識別子です。ノート自体の一部ではありません。
ここで言いたいのは、メタデータ (データに関するデータ) は属性として格納する必要があり、データ自体は要素として格納する必要があるということです。