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)に近い形で示してみた。要素に関しては汎用で馬、両親という形にしたけれども、必須要素(自分とその両親)に関しては書き換えてもいいのかもしれない。