<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>文書型定義</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">document type definition</rt></rubyb></dfn> (<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor></dfn>)
は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> において<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型</anchor>を定義する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け宣言</anchor>等の集合体です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>に関する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ言語</anchor>の1つですが、
現在では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ言語</anchor>自体が旧時代の遺物と考えられています。
その中でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> は特に古い時代を引きずった避けるべきものというのが一般的な認識です。</p><section><h1>DTD の版</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> には歴史的にいくつかの版があります。</p><figure class="middle list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> の版</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web SGML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DT4DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ型・名前空間対応DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LPD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10744</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">体系的DTD</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ETDS</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML m12n</anchor></li></ul></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の影響を受けた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EBML</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ言語</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EBML DTD</anchor>
と呼んでいます。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> 系の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> と (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ言語</anchor>であるということ以外に)
互換性はありません。</p></section><section><h1>文書型定義 (SGML)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型</anchor>の定義。 Document type definition。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> </p><blockquote><dl><dt>3.24 <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書(型)定義<rt xmlns="http://www.w3.org/1999/xhtml">document (type) definition</rt></rubyb>, DTD</dt><dd>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>によって決定される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規則</anchor>であって、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> を特定の型の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク</anchor>に適用するもの。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>で表現された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素型</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の関係, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の形式的な仕様と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現</anchor>することができる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>を含む。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> が構文を定義している<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">語彙</anchor>を定義する。</dd></dl></blockquote><p>出典: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10744</anchor>:1997 <csection xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">3 Definitions</csection>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-3.html#def-3.24">http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-3.html#def-3.24</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end></p><blockquote><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">共通識別子</anchor>は、その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>がどの種類 (<q>型</q>)
のものであるかを表している。
その特定の型のすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>に適用する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク宣言</anchor>の集合を、
文書型定義という。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>‐1992 参考3 4.1</src></p></blockquote><p>意味不明なのは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS</anchor> の翻訳が悪いと思われ。</p><blockquote><p>何度も同じことを繰り返さないで済むように、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>は、
普通、別個の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>として蓄えてある。それぞれの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>では、
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型</anchor>を指定しその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>できるようにした<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>を書くことで、
その中に取り込んで利用する。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>‐1992 参考3 4.1</src></p></blockquote><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> SGML では種々の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク宣言</anchor>を使って、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>によって文書型を定義します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> 文書型定義と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実現値</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">class</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">instance</anchor> のような関係にあります。</p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOCTYPE</anchor></code> 宣言 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>) により明示される。直接記述される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部部分集合</anchor>と、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">識別子</anchor>により参照される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合</anchor>に大別できる。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> DTD の明示は旧来の SGML では必須であったが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WebSGML</anchor> では省略 (暗示) することができる。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 本来の SGML よりも非常に機能を制限したものながら、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> でも DTD を使用することが出来る。 (というか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当</anchor>であるためには DTD の明示が必須である。)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> しかしながら、 XML では妥当性検証が optional であるがために DTD は本来の実力をほとんど発揮できないばかりか、むしろ前時代の遺産として嫌われる傾向にある。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> 嫌われる原因としては、 (1) XML が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実現値</anchor>本体の記述では捨てた記述の自由性が比較的 DTD には残されている (よって実装が比較的面倒である) こと、(2) 拡張性のある DTD にするためには超人的トリック(謎)が必要であること、(3) (2) に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML名前空間</anchor>が加われば DTD との相性は最悪で、使い物にならなくなる場合さえあること、辺りに集約できよう。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> と似たものとして、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">連結処理定義</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LPD</anchor>
を規定していますが、こちらは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> の必須の機能ではなくあまり使われておらず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> にも含まれていません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 10744</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">体系</anchor>の定義のための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">体系的DTD</anchor> を規定しています。
また、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> 風の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク宣言</anchor>の集合体として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句型定義</anchor>も規定されています。</p></section><section><h1>文書型定義 (XML)</h1><section><h1>定義</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> </p><blockquote><dl><dt>DTD</dt><dd>
DTD (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>) は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク宣言</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集成</anchor>であり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> に適合する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>で使うことができる合法的な構造、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集成</anchor>として定義するものです。</dd></dl></blockquote><p>仕様書:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML 1.0</anchor><ul><li><cite>2.2. General Terms</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="XHTML10:&quot;general&quot;">IW:XHTML10:&quot;general&quot;</anchor-external></li></ul></li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> </p><blockquote><dl><dt><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義<rt xmlns="http://www.w3.org/1999/xhtml">document type definition</rt></rubyb> (DTD)</dt><dd>
特定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実現値</anchor>が適合する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor>
の構造と構文の規則の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">形式的</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">機械可読</anchor>な表現。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML 1.0</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実現値</anchor>を宣言された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型</anchor>に関して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性検証</anchor>するために使われる
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">scheme</anchor> の種類。同じ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け模型</anchor>が複数の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor>
で表現できます。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">XHTML m12n Term</src></dd></dl></blockquote><p>仕様書:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML m12n</anchor><ul><li>[XHTML m12n Term] <csection xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">2. Terms and Definitions</csection>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="IW" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="XHTML1m12n:&quot;terms.html#a_terms&quot;">IW:XHTML1m12n:&quot;terms.html#a_terms&quot;</anchor-external></li></ul></li></ul></p></section><section><h1>物理構造</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML DTD</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実体</anchor>中の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>に直接記述する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部部分集合</anchor>と、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合</anchor>によって構成されます。また、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部部分集合</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合</anchor>における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体参照</anchor>から<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体</anchor>もその一部を構成します。</p><figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言部分集合</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部部分集合</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク区間</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">条件区間</anchor><ul><li><code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">INCLUDE</anchor></code></li><li><code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IGNORE</anchor></code></li></ul></li></ul></li></ul></figure></section><section><h1>論理構造</h1><figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け宣言</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型宣言</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素宣言</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性並び宣言</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体宣言</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">一般実体</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非解析対象実体</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数実体</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">記法宣言</anchor></li></ul></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">処理指令</anchor></li></ul></figure></section><section><h1>MIME 型</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>については、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部部分集合実体</anchor>を参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部引数実体</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>については、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部引数実体</anchor>を参照。</p></section><section><h1>構文解析への影響</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML文書</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>を構築するに当たり、
次に示す点で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> の内容が処理に影響を与えます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> そのものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor>に反映される場合、当然ながら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor>
の内容が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">木</anchor>に影響します。現在の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM Standard</anchor> の範囲では
<code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOCTYPE</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>の有無と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型名</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開識別子</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">システム識別子</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>に反映されます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM3</anchor> 時代は更に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体宣言</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">記法宣言</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部部分集合</anchor>部分の文字列が
(理論上は) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>に反映されることとなっていました。また <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Web</anchor>
以外での <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> の実装では、これ以外に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素宣言</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性並び宣言</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> 内の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">処理指令</anchor>も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>に反映されることがあります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性並び宣言</anchor>で <code class="SGML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA</anchor></code> 以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言型</anchor>が指定されている場合、
それに対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性値</anchor>では、通常よりも更に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規化</anchor>が行われます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性並び宣言</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor>が指定されている場合、それに対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>になければ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定値</anchor>が設定されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> また次に示す点は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">木</anchor>そのものには影響しませんが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>としては区別がつかない
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML文書</anchor>上の表現方法の違いが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML文書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性</anchor>に影響します。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM木</anchor>に変換する前の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>途中に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> に基づきエラーを検出する必要があります。)<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素内容</anchor>とされている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字参照</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA区間</anchor>を使ってはなりません。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容</anchor>が <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EMPTY</anchor></code> とされている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA区間</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体参照</anchor>を使ってはなりません。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容</anchor>が <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EMPTY</anchor></code> とされている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空要素タグ</anchor>構文を使うべきです。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内容</anchor>が <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EMPTY</anchor></code> 以外とされている場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空要素タグ</anchor>構文を使うべきではありません。</li></ul></figure></p></section><section><h1>XML DTD 入門編</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> XML では著者が自由に要素や属性を使えるわけですが、
その自由さはともすれば無秩序を招くことになります。
たとえば「段落」要素の子供に「章」要素があるとか、
「人名」要素の子供に「電話番号」要素があるとか、
「本」要素に「敬称」属性がついているとかいうようなことは、
普通は認められるべきではないでしょう。しかし XML
の構文自体はこのような意味的判断とは独立していますから、
ここで挙げた例もすべて認められてしまいます。</p><p>そこで、要素や属性の関係の制約を記述する方法が幾つも
考えられています。その記述を一般に「schema (スキーマ)」
と呼びまして、特に XML 用のものとして「XML DTD」や「XML Schema」
などがあります。このような schema を使って文書の正当性を検査することを
「妥当性検証 (validation)」といいます。検査に合格すれば
「妥当 (valid)」、不合格なら「非妥当 (invalid)」です。
データの入力を人間が行う場合には特に間違いが起こりやすいですから、
schema を用意して機械的に検証することは非常に重要です。</p><p>今回取り上げるのはそのうちの XML DTD です。「DTD」は「文書型定義
(document type definition)」の略です。 DTD 
は設計が古いので既に色々な問題点がわかっています
(から他の schema 言語が色々と考案されたのです) が、比較的単純で簡単ですし、
現時点で他の schema 言語よりもずっと広く使用・実装されています。</p><p>今後の予定</p><p>2. 要素型宣言
3. 内容モデル
4. 属性定義並び宣言
5. 実体宣言
6. 補足</p><p>各回の最後には演習問題を用意する予定です。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end>
<cite>Designing document type definition (DTD) in SGML/XML</cite> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.chimaira.org/docs/On-DTD.A2.html">http://www.chimaira.org/docs/On-DTD.A2.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end>
<cite xml:lang="en">DTDs Don’t Work on the Web</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Henri Sivonen</anchor> 著, <code>2007-01-19 00:24:34 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://hsivonen.iki.fi/no-dtd/">http://hsivonen.iki.fi/no-dtd/</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-01-24 12:40:59 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end>
<cite xml:lang="ja">DTD は役に立たない</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">わかば</anchor> 著, <time>2007-05-25 09:21:54 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://suika.suikawiki.org/~wakaba/d/d200705#d25-1">http://suika.suikawiki.org/~wakaba/d/d200705#d25-1</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-06-03 14:33:00 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JTC1</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SC34</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間・データ型対応DTD</anchor>
の標準化作業を行っていますが、作業はかなり<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ゆっくりしっていってね</anchor>な感じのようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <cite xml:lang="en">Ending DTD proliferation at the W3C</cite>
( (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Michael<strong xmlns="http://www.w3.org/1999/xhtml">[</strong>tm<strong xmlns="http://www.w3.org/1999/xhtml">]</strong> Smith</anchor> 著, <time>2014-01-14 04:22:05 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://lists.w3.org/Archives/Public/www-tag/2014Jan/0033.html">http://lists.w3.org/Archives/Public/www-tag/2014Jan/0033.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <cite>Don’t call me DOM &amp;#187; Generating HTML documentation from DTD</cite> (<code>2007-08-04 11:19:37 +09:00</code> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://people.w3.org/~dom/archives/2007/07/generating-html-documentation-from-dtd/">http://people.w3.org/~dom/archives/2007/07/generating-html-documentation-from-dtd/</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-08-04 02:21:17 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <cite>Don’t call me DOM &amp;#187; DTD comparison</cite> (<time>2007-09-13 21:14:26 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://people.w3.org/~dom/archives/2007/09/dtd-comparison/">http://people.w3.org/~dom/archives/2007/09/dtd-comparison/</anchor-external></p></section></section><section><h1>応用</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>SGML応用</anchor> </sw-see></p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 俗に、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> によって記述される対象である<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>のことを <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor>
と言うこともあります。場合によっては <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> が存在しない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>のことすら
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> ということすらあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> は歴史的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">形式的</anchor>定義とみなされており、
特に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> 時代は (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML DTD</anchor> よりも表現力が高かったこと、
他に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ言語</anchor>がなかったこと、一般に現在よりも仕様(書)に求められる厳密度が低かったことから)
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性検証</anchor>を通過することが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け言語</anchor>への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor> 用語である「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当</anchor>」) と考えられていました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> しかし現在では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> によって記述できるのは仕様のごく基本的な部分のみであること、
にも関わらず <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性検証</anchor>を通過することが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合</anchor>と誤解されることが多いことなどから、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> はむしろ有害と見なされるようになっています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> は長年 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Validator</anchor> と称して <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> への適合性を検証するサービスを提供していましたが、
実態はほぼ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> による<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性検証</anchor>を行っているに過ぎず、自身の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">勧告</anchor>である
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> 仕様書の記述に従っているかどうかのチェックは実装していませんでした。
当時 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C Validator</anchor> で検査したことを根拠に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML1</anchor>
の正しい文書であると主張する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webページ</anchor>は世界的に相当数ありましたが、
そのうちのどれだけが <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML1</anchor> の仕様上の要件にすべて従っていたのか大変怪しいところです。
(その <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML1</anchor> 仕様書の方も、一体どれが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">適合性</anchor>の要件なのかはっきりしない低品質の仕様書ではあったので、
それ以上のものを実装するのも難しかったでしょうが...)</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML2 WG</anchor> が本文と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML Schema</anchor> と
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RELAX NG</anchor> とで矛盾する内容の仕様書を発行し続けていたように、
複数の異なる「正式」な定義が併存しているとその整合性を保つのは事実上不可能です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</anchor> で適合性の要件を記述できないのは明白ですし、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML Schema</anchor> 
は複雑で理解困難にも関わらずやはりすべての適合性の要件を記述できるわけではないので、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スキーマ</anchor>による定義を正式な仕様の一部としない近年の傾向は自然な流れでしょう。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <cite>ANN: Web 2.0 Mashup Ajax JavaScript Json Web Standards Validator Poniez &lt;3 from Bjoern Hoehrmann on 2006-11-01 (www-qa@w3.org from November 2006)</cite> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://lists.w3.org/Archives/Public/www-qa/2006Nov/0000.html">http://lists.w3.org/Archives/Public/www-qa/2006Nov/0000.html</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2006-11-12 09:59:34 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD++</anchor></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> <cite>Inline XBRL Part 0: Primer 1.0</cite>
(<time>2013-06-04 02:32:15 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.xbrl.org/specification/inlinexbrl-part0/rec-2010-04-20/inlinexbrl-part0-rec-2010-04-20.html">http://www.xbrl.org/specification/inlinexbrl-part0/rec-2010-04-20/inlinexbrl-part0-rec-2010-04-20.html</anchor-external></figcaption><blockquote><p>It is worth noting that the Public Text Class &quot;DTD&quot;, when used as part of the Formal Public Identifier, means &quot;document type declaration subset&quot; and not &quot;Document Type Definition&quot;; so the use of the Formal Public Identifier should not be taken to imply the existence of a Document Type Definition.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">型定義<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">type definition</rt></rubyb></dfn> = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書型定義</anchor>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JIS X 4151</anchor>‐1992 3. (36)</src></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <cite xml:lang="en">RFC 5689 - Extended MKCOL for Web Distributed Authoring and Versioning (WebDAV)</cite>
(<time>2017-09-17 19:54:27 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc5689#section-2">https://tools.ietf.org/html/rfc5689#section-2</anchor-external></figcaption><blockquote><p>This document uses XML DTD fragments (Section 3.2 of</p><p><strong>[</strong>W3C.REC-xml-20081126<strong>]</strong>) as a purely notational convention.</p></blockquote></figure><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> <cite xml:lang="en">RFC 5842 - Binding Extensions to Web Distributed Authoring and Versioning (WebDAV)</cite>
(<time>2017-09-30 00:47:40 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc5842#section-1.1">https://tools.ietf.org/html/rfc5842#section-1.1</anchor-external></figcaption><blockquote><p>This document uses XML DTD fragments (<strong>[</strong>XML<strong>]</strong>) as a notational</p><p>convention, using the rules defined in Section 17 of <strong>[</strong>RFC4918<strong>]</strong>.</p></blockquote></figure></section></body></html>