<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="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:">XML</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実体</anchor>の先頭に書くことができる <code class="XML" xml:lang="en">&lt;?xml?&gt;</code> を
<dfn>XML <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">declaration</rt></rubyb></dfn>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部解析対象実体</anchor>の先頭に書くことができる <code class="XML" xml:lang="en">&lt;?xml?&gt;</code>
を<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト宣言<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">text declaration</rt></rubyb></dfn>といいます。</p><section><h1>XML 宣言</h1><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:">XML宣言</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書実体</anchor>の先頭に1つだけ指定することができます。</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:">XML宣言</anchor>は必須ではありません。</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> <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:">BOM</anchor> はあってもOKです。)</p></section><section><h1>テキスト宣言</h1><p><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> <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>)
の先頭に1つだけ指定することができます。</p><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> <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:">注釈</anchor>も含め、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト宣言</anchor>より前に何かがあってはいけません。 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BOM</anchor> はあってもOKです。)</p><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> <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:">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:">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>が含まれることになって、好ましくないように思えます。</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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</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:">SGML実体</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>は対応するものが何もない (システム側に属する何かである) ということになりますが、
そういう任意の解釈を導入してしまうと何とでも言えてしまうのでちょっと・・・。</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</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>してはいけないことになっているので、
この問題は生じません。</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> ここでいう「テキスト」とは、<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>テキスト実体</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">text entity</rt></rubyb>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">解析対象実体</anchor>) や<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>実体文</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">entity text</rt></rubyb>の「text」
の意味 (= 「parsed」) と思われます。</comment-p></section><section><h1>擬似属性</h1><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> <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:">要素</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="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>」という用語は <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&lt;?xml-stylesheet?&gt;</anchor></code>
で導入されたもので、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の仕様書では使われていません。</p><figure><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">擬似属性</anchor>の一覧</figcaption><table><tbody><tr><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">擬似属性</anchor>の名前</td><td>XML 仕様書での呼称</td><td>説明</td></tr><tr><td><code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">version</anchor></code></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の版</td></tr><tr><td><code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoding</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化宣言</anchor></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字符号化</anchor></td></tr><tr><td><code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">standalone</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単独文書宣言</anchor></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部実体</anchor>の有無</td></tr></tbody></table></figure><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">擬似属性</anchor>は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal> に示した順序でのみ指定できます。</p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML宣言</anchor>では <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">version</anchor></code> <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="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">テキスト宣言</anchor>では <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoding</anchor></code> <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="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">standalone</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:">XML宣言</anchor>でのみ使えます。</p></section><section><h1>DOM 表現</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:">DOM3中核</anchor>では <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Document</anchor></code> に <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlVersion</anchor></code>、
<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlEncoding</anchor></code>、<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlStandalone</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:">XML宣言</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:">DOM3中核</anchor>では <code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Entity</anchor></code> に <code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlVersion</anchor></code>、
<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xmlEncoding</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>の情報がここに現れます。</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:">DOM Standard</anchor> では <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;29</anchor-internal> も <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;30</anchor-internal> も削除されており、<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:">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>にはアクセスできません。</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:">DOM3</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>の有無の情報にアクセスできるのかは曖昧です。</p><p><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:">Chrome</anchor> は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;29</anchor-internal> を実装しています。今後削除されるかは不明です。 <time>2014-02-16T06:01:55.300Z</time></p></section><section><h1>処理指令との関係</h1><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:">XML</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:">xml</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:">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:">文書</anchor>に含めることはできません。</p><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:">DOM</anchor> の <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">createProcessingInstruction</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>が
<code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">xml</anchor></code> かどうかチェックしません。ですから<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:">DOM</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">木</anchor>を作ることはできます。</p></section><section><h1>HTML における XML 宣言</h1><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> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XHTML</anchor> ではなく) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</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:">XHTML</anchor> を
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">text/html</anchor></code> で提供することが流行った時代には、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML宣言</anchor>を含む <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML文書</anchor>が数多く生み出されました。
しかし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML構文解析器</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:">XML宣言</anchor>に含まれる情報が解釈されることはありません。</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> かつては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML宣言</anchor>の有無が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOCTYPEスイッチ</anchor>に影響する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webブラウザー</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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> ただし<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML宣言</anchor>の有無により動作を変えているというよりは、未知の文字列として扱っていたとみられます。</comment-p><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:">HTML</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></section><section><h1>関連</h1><p><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>charset sniffing</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> XML 宣言 (というか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化宣言</anchor>) って便利なんですよー。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NC</anchor>4 って日本語の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>の判別が今ほど精度よくないんで、たまに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">シフトJIS</anchor> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">日本語EUC</anchor> 間違っちゃうんです。でも、 NC4 にはもれなく XML 宣言 (や他の<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="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end><pre>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;!-- saved from url=(0064)http://foo.example/ --&gt;
&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-2022-jp&quot;?&gt;&lt;html lang=ja 
xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;ja&quot;&gt;&lt;head&gt;&lt;title&gt;
<ins>(略)</ins></pre></p><p>こういうのを見てどう思います?
出力したのは例の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WWWブラウザ</anchor>。</p><p><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>
Q: XML 宣言って必須ですよね?</p><p>A: いいえ。 XML 宣言は必須ではありません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">XML 宣言必須説、あちこちで見かけるのですけど、お前は本当に仕様書読んだのかと問い詰めたいですよ。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">あ、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML 1.1</anchor> をお使いであれば、必須です。</comment-p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> [sage])</p><p><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>
無料鯖とか広告のために内容を改竄する形の鯖のせいで XML 宣言が一番最初じゃなくなることがあるみたいです。
そういう鯖の利用者は XML 宣言つきにするべきではありませんね。むしろへんてこな XML 宣言はつけては<strong>ならない</strong>ですよね。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2004-07-10 09:05:38 +00:00</weak>)</p><p><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>
<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encoding</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">擬似属性</anchor>を<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</anchor></code>にしている人がいくらかいるみたいです。どうみても非<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">整形式</anchor>です。本当にありがとうございました。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<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="Google:&quot;\&quot;xml version 1.0 charset\&quot;&quot;">IW:Google:&quot;\&quot;xml version 1.0 charset\&quot;&quot;</anchor-external></comment-p><figure class="quote"><figcaption><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> <cite xml:lang="ja">時事ドットコム:文化庁の京都移転有力に=「一部機能」軸に検討-政府</cite>
(<time>2015-12-31 14:45:39 +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.jiji.com/jc/zc?k=201512/2015123000492&amp;g=pol">http://www.jiji.com/jc/zc?k=201512/2015123000492&amp;g=pol</anchor-external></figcaption><blockquote><p>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</p><p>&lt;?xml version=&quot;1.0&quot; encoding=&quot;euc-jp&quot;?&gt;</p><p>&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:og=&quot;http://ogp.me/ns#&quot; xmlns:fb=&quot;http://ogp.me/ns/fb#&quot; lang=&quot;ja&quot;&gt;</p><p>&lt;head&gt;</p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">RFC 5070 - The Incident Object Description Exchange Format</cite>
(<time>2017-05-07 20:04:30 +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/rfc5070#section-4.1">https://tools.ietf.org/html/rfc5070#section-4.1</anchor-external></figcaption><blockquote><p>Every IODEF document MUST begin with an XML declaration, and MUST</p><p>specify the XML version used.  If UTF-8 encoding is not used, the</p><p>character encoding MUST also be explicitly specified. </p></blockquote></figure><figure class="quote"><figcaption><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> <cite xml:lang="en">RFC 7970 - The Incident Object Description Exchange Format Version 2</cite>
(<time>2017-05-14 16:49:04 +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/rfc7970#section-4.1">https://tools.ietf.org/html/rfc7970#section-4.1</anchor-external></figcaption><blockquote><p>Every IODEF document MUST begin with an XML declaration and MUST</p><p>specify the XML version used.  The character encoding MUST also be</p><p>explicitly specified.  UTF-8 <strong>[</strong>RFC3629<strong>]</strong> SHOULD be used unless UTF-16</p><p><strong>[</strong>RFC2781<strong>]</strong> is necessary.  Encodings other than UTF-8 and UTF-16 SHOULD</p><p>NOT be used.  </p></blockquote></figure><p><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> <cite xml:lang="en">Bogo-XML Declaration Returns to Gecko</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Henri Sivonen</anchor>, <time>2021-06-02T07:36:32.000Z</time>, <time>2021-06-04T09:37:02.388Z</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://hsivonen.fi/xml-decl/">https://hsivonen.fi/xml-decl/</anchor-external></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> <cite xml:lang="en">rfc3920</cite>, <time>2021-06-22T06:19:09.000Z</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://datatracker.ietf.org/doc/html/rfc3920#section-11.4">https://datatracker.ietf.org/doc/html/rfc3920#section-11.4</anchor-external></p><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">text declaration</anchor> を<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">使え</SHOULD>と言っているが実際には
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML宣言</anchor>しか書けない。</p></section></body></html>