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

2000年10月15日(日)更新


■「万葉集テキスト」のDTDを考えましょう: その1「DTDって何?」

さらら: 「DTD」って・・・・?

たけち: DTDは"Document Type Definition"って言って、「文書の型(構造)の定義」をあらわすものなんだよ。

さらら: えっ・・・ (? ?)

たけち: 僕たちは「万葉集テキスト」のXML化を考えているよね。そのために、これまで「万葉集の構造」を考えてきたよね。その構造に基づいてXMLテキストを作るんだけど、その構造をきちんとコンピューターに教えてあげる必要があるんだよね。そのための規則がDTDなんだよ。

さらら: あっ、そうなのね。私たちは「図に書いた万葉集の構造」をみれば理解できるけど、コンピューターには別の方法で教えなくちゃいけなくって・・・・そのためにDTDが必要ってことなのね。

たけち: そうそう。実際には、次のようなときなどにDTDが使われるんだよ。

  • ソフトウェア: XMLテキストがDTDに従っている正しいテキストかどうかを判別する
  • ソフトウェア: DTDを参照して正しいXMLテキストを生成する
  • 開発者: DTDを参照して、XMLテキストを正しく処理するソフトウェアを開発する

じゃあ、DTDの書き方をすこしずつ説明してゆくね。

■XMLテキストに出てくる要素をあらわす「要素宣言

たけち: まずは、「要素宣言」についての説明。

さらら: 「要素」って?

たけち: 「要素」は、これまで考えてきた「万葉集の構造」に出てきた、巻・目次・本文・歌リスト・歌タイトル・歌の種類・歌(unit)・歌・原文・読み・・・・などのことをいうんだよ。

さらら: あっ、そういうこと。。。。 (^ ^*

たけち: 「要素宣言」は次のように書くんだ。

<!ELEMENT 要素名 構造上の規則>

さらら: 「構造上の規則」ってなぁに?

たけち: その要素の下にどんな要素がでてくるかをあらわすんだ。下に何も無いときには、その要素がどんなテキストかを示すんだよ。簡単な例を図にしておくね。

さらら: あっ、わかるわ。。。。でも、やっぱり私たちには「図」の方が分かるわね。ところで、このDTDに日本語を使っていいの?

たけち: かまわないんだけど、最終的には英語にするつもりだよ。構造がきちんと決まってから英語にすればいいよね。しばらくはこのまま日本語でやっていくね。さて、構造をあらわすにはもうひとつの情報が必要だからそっちも説明しなくちゃね。

さらら: えっ、・・・

たけち: 「属性」

さらら: あっ、そっ、そうだったわね。 (^ ^;

→ 次は属性の定義の仕方です。 (^ ^;


注 1) DTDはもともとはSGML文書の構造を示すのに使われ、XMLでも適用されていますが、いろいろな不都合があることから、"Scheme(スキーマ)"として新たに検討がされています。ただ、この"Scheme(スキーマ)"は、非常に複雑でその制定にまだ時間がかかりそうです。また、「万葉集テキスト」程度でしたら、DTDで十分なのでこのままDTDの説明を進めさせていただきます。

注 2) SGMLやXMLをある程度ご存知の方には、「万葉集というひとつしか生成しないテキストにどうしてDTDを定義する必要があるのか?」と疑問の方もいらっしゃるかもしれません。ここでのDTD作成の目的は、「万葉集テキスト処理をするソフトウェア(開発者)のための構造的ルールを示すこと」と「他の歌集の歌の構造との共通化を検討するためのベースとすること」です。