古典文学とXML(万葉集の構造を考えましょ)

2001年12月23日(日)更新


■「万葉集テキスト」のDTDを考えましょう: 万葉集のDTDサンプル

たけち: いままでのをまとめて一つのDTDにしてみるね。つぎに図と一緒にまとめて載せるからちょっと眺めてみて。

目次と本文

歌セット

凡例

<!DOCTYPE 万葉集 [

<!-- 万葉集の構造(例) 要素宣言 -->
<!ELEMENT 万葉集 (巻+)>
<!ELEMENT 巻 (目次, 本文)>
<!ELEMENT 目次 (タイトルグループ+)>
<!ELEMENT タイトルグループ (歌の種類?, 天皇の代?, 歌リスト+)>
<!ELEMENT 歌の種類 (#PCDATA)>
<!ELEMENT 天皇の代 (#PCDATA)>
<!ELEMENT 歌リスト (歌タイトル+)>
<!ELEMENT 歌タイトル (#PCDATA)>

<!ELEMENT 本文 (タイトル, 本文グループ+)>
<!ELEMENT 本文グループ (歌の種類?, 歌グループ+)>
<!ELEMENT 歌グループ (天皇の代?, 歌の種類?, 題詞?, 歌セット+)>
<!ELEMENT 題詞 (#PCDATA)>
<!ELEMENT 歌セット (歌ユニット+, 注?)>
<!ELEMENT 歌ユニット (原文, 読み)>
<!ELEMENT 原文 (段落)>
<!ELEMENT 読み (段落)>
<!ELEMENT 注 (段落)+>
<!ELEMENT 段落 (#PCDATA | 人物 | 植物 | 生物 | 土地 | 枕詞 | その他 )*>
<!ELEMENT 人物 (#PCDATA)>
<!ELEMENT 植物 (#PCDATA)>
<!ELEMENT 生物 (#PCDATA)>
<!ELEMENT 土地 (#PCDATA)>
<!ELEMENT 枕詞 (#PCDATA)>
<!ELEMENT その他 (#PCDATA)>

<!-- 歌の属性(例) 属性宣言 -->
<!ATTLIST 歌ユニット 種類 (雑歌 | 挽歌 | 相聞歌 | ・・・・) #REQUIRED>
<!ATTLIST 歌ユニット 歌番号 ID #REQUIRED>
<!ATTLIST 歌ユニット 作者名 CDATA #REQUIRED>
<!ATTLIST 歌ユニット 贈答者名 CDATA #IMPLIED>
<!ATTLIST 歌ユニット 季節 (春 | 夏 | 秋 | 冬) "春">
<!ATTLIST 歌ユニット 自然 (山 | 海 | 川 | 雲 | 風 | ・・・・) #IMPLIED>
<!ATTLIST 歌ユニット 状況 (宴会 | 国見 | 野遊び | 宮廷讃美 | ・・・・) #IMPLIED>
<!ATTLIST 歌ユニット 感情 (喜び | 物思い | 不安 | 安心 | 哀しみ |・・・・) #IMPLIED>

]>

さらら: あれっ? 先頭の"<!DOCTYPE 万葉集 ["ってなぁに?

たけち: あっ、そうそう。これは文書型宣言(Dcoument Type Declaration)っていって、DTDですよって示すのに必要なんだ。ここでは「万葉集」っていうDTDがありますよっていう意味。で、最後の行の"]>"はこの文書型宣言の終わりを示しいてるんだね。

さらら: そうなんだぁ。でも、やっぱり見慣れない文字がいっぱいで、ちょっとみただけではどんな構造なのかは分かりにくいわね。それに、作ったりするのにいろいろと間違えそうだわ・・・

たけち: そうだよね。いまは、構造を表わす図を描きながらDTDを作ってゆけるソフトウェアがあるんだよ。

さらら: あら、それって便利そうね。どんなのがあるのかしら・・・

たけち: ぼくもあんまり多くは知らないけど、次にいくつか載せておくね。

  • Near&Far Designer 3.0
    • 東芝アドバンストシステム http://www.tas.co.jp/xml/tools/
  • XML Authority
    • インフォテリア http://www.infoteria.com/jp/
  • esooner DTDEditor
    • ウッドランド http://www.woodland.co.jp/persimmon/esooner/

さらら: で、これでDTDができあがりなのね。

たけち: そうなんだけど・・・・これをxmlテキストと関連付けなくちゃね。DTDだけあっても仕方ないよね。

さらら: あっ、そいういえばそうね・・・ (^ ^;

→ 次はXMLの書き方を復習しながら詳しく・・・ (^ ^;