1. ホーム
  2. xml

[解決済み] XMLでは、要素と属性のどちらを使うべきですか?重複

2023-05-28 02:55:31

質問

について学んでいます。 XML属性についてW3Schoolsで勉強しています。 .

著者は次のように言及しています(強調)。

XML 要素と属性の比較

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>


<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

最初の例では、sexは属性です。最後の例では、sexは要素です。どちらの例も同じ情報を提供します。

いつ属性を使い、いつ要素を使うかについてのルールはありません。属性はHTMLでは便利です。 XMLでは、私のアドバイスは、それらを避けることです。代わりに要素を使いましょう。

XML属性は避けるべきですか?

属性を使用する際の問題点として、以下のようなものがあります。

  • 属性は複数の値を含むことができません(要素は可能です)。
  • 属性にツリー構造を含めることはできません(要素は可能)。
  • 属性は簡単に拡張できません (将来の変更のため)

属性は読みやすく、メンテナンスがしにくい。データには要素を使いましょう。データとは関係のない情報には属性を使いましょう。

では、著者の見解は有名なものなのか、それともこれがXMLのベストプラクティスなのでしょうか?

XMLにおけるAttributeは避けるべき?

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は単なる識別子で、異なる音符を識別するためのものです。ノート自体の一部ではありません。

ここで言いたいのは、メタデータ(データに関するデータ)は属性として格納されるべきで、データそのものは要素として格納されるべきだということです。

どのように解決するのですか?

属性や要素の使い方は、通常、モデル化しようとするデータによって決まります。

例えば、あるエンティティが PART である場合、それを要素にすることをお勧めします。例えば、従業員の名前は、従業員データの重要な部分です。

さて、もしあなたが メタデータ を伝えたいが、実際にはデータの一部ではない場合、それを属性にするのがよいでしょう。 例えば、各従業員がバックエンド処理に必要なGUIDを持っているとすると、それを属性にするのが良いでしょう(GUIDはxmlを見ている人に本当に役立つ情報を伝えるものではありませんが、他の目的では必要かもしれません)。

何かが属性であるべき、あるいは要素であるべきというようなルールはありません。

属性を避ける必要はないでしょう。それは本当にあなたが表現しようとしているデータに依存します。