血統の森+はてな

旧はてなダイアリーの自動インポートによるアーカイブです。

XML血統表プロトタイプ・ノート

id:arikui:20060123:1137952474
というわけで、とりあえずXMLを書いてみた。今回は見易さを考えて日本語で記述してみた。
XMLソース中の//はコメントで一応解説。-(ハイフン)は見やすさを考えて(IEっぽく)意図的に挿入。XMLなのにコメントがC++とはこれ如何に。

<血統 代数="2">                   //XML血統表プロトタイプのルート。代数は文字通り代の数。2代血統表なので2
-<馬 階層="自分">                 //血統表対象馬(必須)
  <名前>ディープインパクト</名前> //馬名(必須)
  <生まれ年>2002</生まれ年>       //生まれ年(任意)。4桁の数字(西暦)縛り。
  <毛色>鹿</毛色>                 //毛色(任意)。栗、栃栗、鹿、黒鹿、青鹿、青、芦、白の毛色縛りができるはず。
 </馬>
-<両親 参照="自分">               //自分の両親(必須)。この階層では当たり前なのだが。
 -<馬 階層="父">                  //父(必須)
   <名前>サンデーサイレンス</名前> //馬名(必須) 馬要素の中には名前要素が必ずなければいけない。
   <別名>Sunday Silence</別名>    //別名表記(任意)。輸入馬との絡みで挿入。
   <生まれ年>1986</生まれ年>
   <毛色>青鹿</毛色>
  </馬>
 -<両親 参照="父">                //参照属性で明示的に指示。同じ階層に階層属性・母がいるのでそれとの区別をする。
  -<馬 階層="父父">
    <名前>Halo</名前>
    <生まれ年>1969</生まれ年>
    <毛色 />                      //netkeibaに毛色がなかったので空要素に。nullはデータベースが知らない状態と等価
   </馬>
  -<馬 階層="父母">
    <名前>Wishing Well</名前>
    <生まれ年>1975</生まれ年>     //階層・生まれ年の親子関係は逆転しない。(スキーマで表現可能?)
    <毛色 />
   </馬>
  </両親>
 -<馬 階層="母">                     //母(必須)
   <名前>ウインドインハーヘア</名前> //輸入馬を明示する属性があっていい。父内国産にもいえるか。
   <別名>Wind in Her Hair</別名> //生産国とか調教国というような情報を入れるべきなのか
   <生まれ年>1991</生まれ年>
   <毛色>鹿毛</毛色>
  </馬>
 -<両親 参照="母">                //母方の祖父母。
  -<馬 階層="母父">
    <名前>Alzao</名前>
    <生まれ年>1980</生まれ年>
    <毛色 />
   </馬>
  -<馬 階層="母母">
    <名前>Burghclere</名前>
    <生まれ年>1977</生まれ年>
    <毛色 />
   </馬>
  </両親>
 </両親>
</血統>

たぶん、階層が増えても何とかなるんじゃないだろうか。入れ子・階層表現をどうすべきかちょっと悩んだ末、HTMLリスト(ul-li)というより定義リスト(dl-dt-dd)に近い形で示してみた。要素に関しては汎用で馬、両親という形にしたけれども、必須要素(自分とその両親)に関しては書き換えてもいいのかもしれない。