attributeを使わないXMLの設計のススメ

XMLの設計のさいに、僕が始めに考えたわけではないのだけど
良く使うフォーマットがある。それは

attributeを一切使わない

というものだ。
プロジェクトによってはXMLだけで100種類以上ゼロベースで設計しなければならない場合がある(Validateなどフォーマットが決まったXMLを特定のルールで大量に書く場合を除く。例えばAPIの設計など。)。
そんな時便利なのが、attributeを一切使わない制約を設けることだ。

利点は多くあるが、主な利点としては

  • 他の人が設計しても、フォーマットがある程度統一される
  • オブジェクトへのマッピングが容易
  • 可読性が高い

といった事があげられる。

他の人が設計しても、フォーマットがある程度統一される

人によって

<item x="0" y="0" />

だったり

<item>
	<x>0</x>
	<y>0</y>
</item>

だったりする。初めのattributeを使う方式では、その中に新たにnodeが入ることもあったりと設計が統一されないという問題があるが「attributeを一切使わない」制約を設けることである程度統一される

オブジェクトへのマッピングが容易

プログラムで扱いやすい形にするにはJSONであらわされるようなシンプルなオブジェクトにマッピングすることだ。
通常のXMLパーサーで生成されるデータは扱いが複雑で、それぞれにパーサーのラッパーを書く必要があったりする。

ただ、「attributeを一切使わない」制約を設けることでJSONのようにオブジェクトにマッピングするパーサーを書くことが可能になり生産効率が飛躍的にアップする。
もちろん「object.item.attribute」のように展開することで、attributeを使ったままでオブジェクトに展開することは可能だが、そもそも禁止することで「object.item.attribute.x」か「object.item.x」なのか迷うことが無くなる。

可読性が高い

単純なツリー形式であらわされる情報にシンプル化されるので、可読性が高まる。



あとは、シンプル化することで、そもそもXMLを設計する工数を減らすことができる。