今DTDの事を少しだけ勉強したのですが、少し疑問に思うことがありました。

documentを元にします。

DTDはまず<!ELEMENT document ()>と宣言すると習いました。その時、()の中に、…例えばtitle、body…などの要素を出現させる順に書かなくてはいけないのはわかりましたが、以下のように書かれていて分からなくなりました。

<!ELEMENT document (title, body)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT body (chapter)>
<!ELEMENT section (#PCDATA)>
……

この場合はじめに宣言していた要素はtitleとbodyだけなのに、sectionも宣言していいのはなんででしょうか?

documentで先に宣言しないといけない要素に決まりはあるのですか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

昔個人的に SGML まわりをかじってたんだけど, もうほとんど忘れてるなぁ....



確か「DTD の最初に書かれた要素が文書のルート要素になる」んだっけ? それ以外の要素はどんな順番に宣言しても構わないはずです.

各要素の宣言における () 内は「その要素の子要素として何をどの順序に含めなければならないか」を示しているだけで, 「その順に各要素を宣言しなければならない」という縛りはなかったと思う.

この回答への補足

なるほどです。
一応宣言はするけど、順番はどちらでもいいと言う事なんですね(^u^)

宣言してないものも書けるのかどうかはわかりませんか?

補足日時:2011/04/25 01:09
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2011/09/13 00:41

「宣言してないものも書けるのかどうか」ということですが,


・どこに (DTD の中なのか, 当該 DTD を適用する文書の中なのか, はたまた全く別の何かなのか)
・何を (要素? 属性? その他?)
書けるかどうかについて考えているのですか?

この回答への補足

違います。
documentで宣言していないのにもかかわらず、sectionが使われているのは問題ないのかという事が聞きたいのです。
もし、問題ないのであれば、宣言する必要がないのではと思います。

補足日時:2011/06/11 13:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報