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