XML設計 - 要素か属性か

XML文書の構造設計の時に、しばしば議論される点らしい。確かに悩む。

  • 要素は複数保持できる。属性は不可能。
  • 要素は順序を保持できる。属性は不可能。
  • 要素は内部構造(さらなる子要素)を保持できる。属性は不可能。
  • 要素はブラウザ等で表示が容易。属性を表示させるのは面倒。

まぁこんな違いがある訳ですが。では「複数不要、順序不要、内部構造不要、表示不要、そして後の拡張時にこれらの特性が必要になる可能性は低い」のであれば、一般的には属性を選択すべきなんだろうか。上記の特性以外に、これは属性ではなく要素がベター、という判断基準はないのかなー。

と思って調べたら、やっぱし「基本的に属性。上記特性が必要な時だけ要素にすべき。」らしい。

参考:XML と Java 技術: 基本に戻る

追記

トラバとブクマコメントを頂きましたので追記。

id:yasuizoさん。

そうそう、4つ目の表示はブラウザで開いた時のアレです。まぁ、ブラウザで表示させることがあるのか、って話もありますので、4番はおまけな感じです。基本的に1〜3で考えればいいのかな、と思ってました。

id:t-wadaさん。

属性はメタデータと考え、属性が無くてもなるべく意味が通じるXMLが良いと考えます。

なるほど。well-formedのXMLであれば、属性であれ要素であれ(処理コストの違いはある*1けど)、プログラムが読み出す事は簡単。ということであれば、あとは「人が見た時にどうか」という事も考えた方がいいですね。

上記のように機械的に「基本的に属性」という選択をするのではなく、コンテキストをうまく表現できる方を選択する方がいいようですね。

*1:上記参考URL参照