プロが教えるわが家の防犯対策術!

DTDと名前空間の関係について質問します。

XMLの本を読みDTDと名前空間の大まかなイメージを下記のようにつかみました。

DTD: XML文書の妥当性を規定し、DTD宣言で指定。
名前空間: ひとつのXML内で要素名の衝突を避けるために、xmlnsで指定。

XHTMLのDTD宣言
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …

XHTMLの名前空間(http://www.w3.org/1999/xhtml)
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

XHTML文書の場合、DTDと名前空間がそれぞれひとつです。
しかし、ひとつのXMLドキュメントで複数の名前空間を利用する場合は、それぞれの名前空間に対して、DTDを宣言するのでしょうか。つまり複数のDTD宣言があるXMLドキュメントになるのでしょうか。

DTDと名前空間の関係が良く分かりません。

XML自体を勉強し始めたばかりで、まとまりのない質問で申し訳ありませんが、よろしくお願いします。

A 回答 (1件)

英語がわからなくても


http://www.w3.org/TR/XHTMLplusMathMLplusSVG/
のソースコードを追ってみると
どういう仕組みになっているかわかると思います。
解説書こうとすると結構難しいので。
=============
●<![INCLUDE[]]> <![IGNORE[]]>
といった書式を取るマーク区間や

●<!ENTITY % hoge "hogefuga">
というように使われるパラメータ実体に関する知識

●外部解析対象実体に関する知識

●外部サブセットよりも内部サブセットの方が優先される

●同一サブセット内では先に書かれた宣言が優先される

ってことがわかっていれば読めるはずです。
外部解析対象実体に慣れてなければ
XHTML 1.1 DTDのFlat版が
http://www.w3.org/TR/xhtml11/DTD/xhtml11-flat.dtd

http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd
を展開したものだとわかれば良いと思う
========================
ああ,そうそう,DTDを使うときの名前空間接頭辞の制約の一つとして
途中で名前空間接頭辞を変更することはできないことを覚えておきましょう。
(XMLとしてはOKだが,DTDでの定義に一致しないから)
http://www.w3.org/TR/2001/REC-xhtml-modularizati …
=========================
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
詳しく説明をいただきありがとうございます。

>英語がわからなくても
​>http://www.w3.org/TR/XHTMLplusMathMLplusSVG/
>のソースコードを追ってみると
>どういう仕組みになっているかわかると思います。

英語は苦手ですが、挑戦してみようと思います。

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

お礼日時:2007/11/16 11:45

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