f8g

DOMというよりHTMLだったかな

http://d.hatena.ne.jp/momdo/20060125/p2
「DOM が出てくるのはまだ早い」ということで、なんで DOM なんて言葉を出してしまったのか考えてみたら、最近 JavaScript を使う機会が多いからなんだと思いました。確かに、 XML - DOM で考えると別に私の書いたような表現でなくてもデータを取得することに関しては大差ないです。しかし、ウェブベースで考えると、 HTML という大きな標準があって、それに対応した JavaScript という言語において、 HTML を DOM として取得するときは常に要素と属性の関係は一定です。なのであんな風に考えてしまったんでしょうね。つまり、ああいう表現の方が個人的に慣れててしっくりくる、というだけでした。なので、

要素をなんでも属性にするのはやはりマークアップの本来の姿からは外れているのではないかと。

というのは別に思っていなくて、派生するデータを持たないものは属性にする、という方がしっくりくるというだけですね。注意すべき点としては、要素と属性の関係性を全体的に統一しないとプログラム組むときに混乱を招きやすいってことでしょうか。なので、mondoさんの書いた形式私の書いた形式かで属性の取り方も変わって来と思います、たぶん。っていうか、 DOM って言葉より「意味的なところが強い」って所の方ですよ! 言いたいのは。
階層構造の話を改めてまとめてみようと思ったらなんか混乱してきたので図で。大きく違っている馬と両親の要素だけ抜き出します。

私の書いたXMLのイメージはこんな感じ。ルートには馬のみ。馬から馬へと辿る。馬の方に情報を詰め込むので、それを要素にするとごちゃごちゃになりそうなので、なるべく属性に記述していくほうがいいと思う。あえて要素にするなら、「詳細」のような要素を作って、その中に名前とかを入れていけばすっきりした感じになりそうではある。

momdoさんの方。ルートには馬と両親が1つずつ。両親には馬と両親が2つずつ。馬の個別情報が独立。代と階層が一致。両親から両親へと代を辿る。馬と両親との関係性は属性に記述。属性を見れば、自分のいる位置がすぐわかる。
んー、どちらも一長一短な感じがする。"父母父父"で検索するとき、私の方は、
"父"→"母"→"父"→"父"
で辿るのに対し、momdoさんの方は
"父"→"父母"→"父母父"→"父母父父"
で辿るという風でしょうか。
もうちょっと詳しく書くと、"父母父父"の名前を取り出すには、

  • ルート→馬()→両親→馬("牡")→両親→馬("牝")→両親→馬("牡")→両親→馬("牡")→名前
  • ルート→両親()→両親("父")→両親("父母")→両親("父母父")→馬("父母父父")→名前

最後まで同じパターンで辿ってデータを取得するのと、一番最後だけは馬で検索してデータを得るというところが一番違うかな。

どこにXMLを使うんだ?どんな形式なの?というのはあったり。

  1. データを格納する形式でのXMLネイティヴXMLデータベース)
  2. データをやり取りするための形式でのXMLトラックバックなど)
  3. データを表示させる形式でのXMLXHTMLよりなXML
  4. メタデータを記述させる形式のXMLRDF

答えづらいというか、どこにでも使えるという答えが一番じゃないでしょうか。形式というのがリストににあるような形式だとしたら、どんな形式にでも。「どこに?」「どうのような?」というのは、開発者によって目的が異なるので一概には言えないとは思います。ただ、完全に「どこにでも」という訳ではなく、血統データなら血統データの応用範囲内にはなるでしょうけど。(血統データで「データをやり取りするための形式」に関する利用方法が思い浮かばない)
「どんな目的にも使えそうなフォーマット」を目指すことでしょうね。