1. ホーム
  2. xml

[解決済み】XML属性とXML要素

2022-04-15 22:42:35

質問

仕事では、データを別のオフラインアプリケーションに渡すためにXMLファイルを作成するよう求められており、その後、データの一部を更新するために、2番目のXMLファイルを作成して送り返します。このプロセスでは、XML ファイルの構造について、他のアプリケーションのチームと議論しています。

私が考え出したサンプルは、基本的に次のようなものです。

<INVENTORY>
   <ITEM serialNumber="something" location="something" barcode="something">
      <TYPE modelNumber="something" vendor="something"/> 
   </ITEM>
</INVENTORY>

他のチームからは、これは業界標準ではないので、属性はメタデータにのみ使用するべきだという意見が出ました。彼らはこう提案しました。

<INVENTORY>
   <ITEM>
      <SERIALNUMBER>something</SERIALNUMBER>
      <LOCATION>something</LOCATION>
      <BARCODE>something</BARCODE>
      <TYPE>
         <MODELNUMBER>something</MODELNUMBER>
         <VENDOR>something</VENDOR>
      </TYPE>
   </ITEM>
</INVENTORY>

前者を提案した理由は、作成されるファイルのサイズがずっと小さいからです。転送中にファイルに含まれるアイテムはおよそ80000個になります。現実には、彼らの提案は、私が提案したものより3倍も大きいことが判明しました。この謎のquot;Industry Standard"を検索してみましたが、XML属性はメタデータにのみ使用されるべきで、実際のメタデータは何かについて議論されている、というのが最も近い内容でした。

長々と説明した後(すみません)、何がメタデータなのか、XML文書の構造を設計するとき、属性と要素の使い分けはどのように判断すればいいのでしょうか。

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

私はこの経験則を利用しています。

  1. 属性とは、色、ID、名前など、自己完結しているものです。
  2. 要素は、それ自身の属性を持つか、または他の要素を含むことができるものです。

では、あなたのは近いですね。私ならこんな風にします。

EDIT : 以下のフィードバックに基づき、元の例を更新しました。

  <ITEM serialNumber="something">
      <BARCODE encoding="Code39">something</BARCODE>
      <LOCATION>XYX</LOCATION>
      <TYPE modelNumber="something">
         <VENDOR>YYZ</VENDOR>
      </TYPE>
   </ITEM>