[1] XHTML 文書における XML名前空間の使用について。
[2] Modularization of XHTML - Building DTD Modules <http://www.w3.org/TR/xhtml-modularization/dtd_module_rules.html#s_module_namespace> によれば、
http://www.w3.org/1999/xhtml
)
は、名前空間を知らない実装との互換性のため、
接頭辞無しの既定名前空間とするべきです。[3] DTDモジュールとして実装する時は、 次のようにします。
MODULE.prefixed
を定義します。%NS.prefixed;
とするべきです。NS.prefixed
は、 XHTML枠組で定義されています。既定値は IGNORE
です。INCLUDE 又は IGNORE
です。
MODULE.xmlns
を定義します。
その値は、モジュールで定義するものの名前空間名とします。MODULE.prefix
を定義します。
その値は、既定の名前空間接頭辞とします。MODULE.pfx
を定義します。
この引数実体の値は、名前空間接頭辞を使う場合は
%MODULE.prefix;:
に、
そうでない場合は
(空文字列) にします。MODULE.xmlns.extra.attrib
を定義します。その値は、このモジュールが参照する XML
名前空間属性(群)の宣言とします。xmlns:xlink %URI.datatype; #FIXED 'URI'
とか。xmlns:MODULE %URI.datatype; #FIXED "%MODULE.xmlns;"
も含めるべきです。XHTML.xmlns.extra.attrib
を定義します。
値は %MODULE.xmlns.extra.attrib;
とします。MODULE.NAME.qname
を用意し、要素型宣言などで使います。その値は
%MODULE.pfx;NAME
にします。MODULE.NAME.ATTRNAME.qname
というような名前の引数実体を定義し、その値を
%MODULE.pfx;ATTRNAME
とします。MODULE.xmlns.attrib
を定義します。値には
%NS.decl.attrib;
を含めるべきです。
MODULE.prefixed
が IGNORE
になっている (接頭辞を使わないことになっている)
時には、更に
xmlns %URI.datatype; #FIXED '%MODULE.xmlns;'
も含めるべきです。%MODULE.xmlns.attrib;
を含めます。name.qname
という引数実体を参照する形とします。[6] XHTML モジュールの DTD 実装では、 名前空間の接頭辞を文書実現値の途中で変更したりできません。 例えば、
<!DOCTYPE html
SYSTEM "http://markup.example/some/xhtml/family/dtd">
<html>
<h:head xmlns:h="http://www.w3.org/1999/xhtml">
<title>Title</title>
</h:head>
<body/>
</html>
のような文書を、 XHTML モジュールの設計の趣旨にのっとって実現する方法はありません。 (無理矢理宣言の一部を書き換えたりすれば実現できなくもないですが、それでは XHTML モジュールを使う意味が余りないというものです。)