<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="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:">XSLT</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">最上位要素</anchor>
<code class="XSLTe"><var>xslt:</var>output</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-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.w3.org/TR/xslt#element-output">http://www.w3.org/TR/xslt#element-output</anchor-external></p><p>但し、実装は必ずしもこの指定を反映させる必要はありません。
特に、結果木を出力せずに次の処理にまわすような場合は全く反映できない
(する必要もない) かもしれません。</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> 属性:<table><tbody><tr><td>属性名</td><td>属性値</td><td>既定値</td><td>説明</td><td>状態</td><td>出典</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cdata-section-elements</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">qnames</anchor></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA区間</anchor>使用要素</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">saxon:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">character-representation</anchor><nsuri>http://icl.com/saxon</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Saxon</anchor> 6</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">saxon:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">character-representation</anchor><nsuri>http://saxon.sf.net/</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Saxon</anchor> 8</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</anchor></code></td><td>charset</td><td></td><td>符号化方式</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xalan:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">content-handler</anchor><nsuri>http://xml.apache.org/xalan</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XALAN</anchor></td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">doctype-public</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">公開識別子</anchor></td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">doctype-system</anchor></code></td><td>文字列</td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">システム識別子</anchor></td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xalan:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">entities</anchor><nsuri>http://xml.apache.org/xalan</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XALAN</anchor></td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">indent</anchor></code></td><td>'yes' / 'no'</td><td></td><td>字下げ</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xalan:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">indent-amount</anchor><nsuri>http://xml.apache.org/xalan</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XALAN</anchor></td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">saxon:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">indent-spaces</anchor><nsuri>http://icl.com/saxon</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Saxon</anchor> 6</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">saxon:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">indent-spaces</anchor><nsuri>http://saxon.sf.net/</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Saxon</anchor> 8</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">media-type</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体型</anchor></td><td></td><td>媒体型</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">method</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QName</anchor></td><td></td><td>出力形式</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">saxon:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">omit-meta-tag</anchor><nsuri>http://icl.com/saxon</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Saxon</anchor> 6</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xalan:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">omit-meta-tag</anchor><nsuri>http://xml.apache.org/xalan</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XALAN</anchor></td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">omit-xml-declaration</anchor></code></td><td>'yes' / 'no'</td><td></td><td>XML 宣言省略</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">standalone</anchor></code></td><td>'yes' / 'no'</td><td></td><td>単独文書</td></tr><tr><td><code class="XSLTa" xml:lang="en"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xalan:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">use-url-escaping</anchor><nsuri>http://xml.apache.org/xalan</nsuri></qn></code></td><td></td><td></td><td></td><td></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XALAN</anchor></td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">version</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前字句</anchor></td><td></td><td>出力形式の版</td></tr></tbody></table></p><p><code class="XSLTe"><var>xslt:</var>output</code> 要素が複数ある場合、
<code class="XSLTa">cdata-section-element</code> 属性についてはすべての
QName を併合, それ以外の属性については<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="XSLTa">method</code> に依存します。
<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> <code class="XSLTa">method</code> の既定値は、<ul><li><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つ持っている</li><li>結果木の根節の最初の要素子の<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="ABNF">&quot;HTML&quot;</code> で、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名前空間URI</anchor> が null である</li><li>結果木の根節の最初の要素子より前にある<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></ul></p><p>の条件が揃えば <code class="XSLTa">html</code>,
それ以外のときは <code class="XSLTa">xml</code> です。</p><p>なお、 <code class="XSLTa">method</code> 属性の値は
<code class="XSLTa">html</code>,
<code class="XSLTa">xml</code>,
<code class="XSLTa">text</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="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <code class="XSLTa">encoding</code> 属性の値は出力する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化方式</anchor>の名前で、
<code class="ABNF">1*( %x21-7E )</code> でなければなりません。
この名前は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IANA</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">charset</anchor> 登録簿の名前か、
または <code class="charset"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">x-</anchor></code> で始まる名前であるべきです。</p><p><code class="XSLTa">media-type</code> 属性の値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体型</anchor>ですが、
<code class="MIME">charset</code> 引数は指定するべきではありません。
<code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">text/*</anchor></code> 媒体型の場合は自動的に
<code class="XSLTa">encoding</code> を参考に適当な名前の
<code class="MIME">charset</code> 引数を与えるべきです。</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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> とはいっても、実装側は「<code class="MIME">text/<var>*</var></code> 
の場合は与えるべき」であって、「与えなければならない」
じゃないですし、非 <code class="MIME">text/<var>*</var></code>
のときは与えるべきでさえないわけです。
だから、例えば <samp class="XSLT">encoding=&quot;iso-2022-jp&quot; media-type=&quot;application/xhtml+xml; charset=iso-2022-jp&quot;</samp>
のように多少面倒でも明記しておいた方がいいんじゃないですかね?</p><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> 出力方式 (<code class="XSLTa">method</code>):<table><tbody><tr><td><code class="XSLTa">method</code></td><td>出力方式</td><td>状態</td><td>出典</td></tr><tr><td><code class="XSLTa">html</code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML出力方式</anchor></td><td>W3C 勧告</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT 1.0</anchor></td></tr><tr><td><code class="XSLTa">text</code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文出力方式</anchor></td><td>W3C 勧告</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT 1.0</anchor></td></tr><tr><td><code class="XSLTa">xml</code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML出力方式</anchor></td><td>W3C 勧告</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT 1.0</anchor></td></tr><tr><td><code class="XSLTa"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xt:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">nxml</anchor><nsuri>http://www.jclark.com/xt</nsuri></qn></code></td><td>非 XML 出力方式</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XT</anchor></td></tr><tr><td><code class="XSLTa"><qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xtj:<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">com.jclark.xsl.sax.NXMLOutputHandler</anchor><nsuri>http://www.jclark.com/xt/java</nsuri></qn></code></td><td>非 XML 出力方式 (= <qn xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">xt:nxml<nsuri>http://www.jclark.com/xt</nsuri></qn>)</td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XT</anchor></td></tr></tbody></table></p><ul><li><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> 符号化方式の名前は大文字・小文字を区別しません。</li><li><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> <code class="XSLTa">cdata-section-elements</code> 属性の接頭辞なしの名前は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定名前空間</anchor>になるんですが、これは XML 処理方式の説明の中にあります。つまり、拡張処理方式で既定名前空間ではなく別の目的で無接頭辞名を使うというのもあり得るということです。ところが、複数 <code class="XSLTe"><var>xslt:</var>output</code> 要素の併合時には修飾名を展開した状態にしないといけないわけです。この辺、実装の仕方によってはちょっと厄介なことになるかもね。</li></ul></body></html>