output method

xslt:output 要素 (XSLT 1.0)

[1] XSLT最上位要素 xslt:output (強制空要素) を使うと、結果木の出力方法を指定できます。 <http://www.w3.org/TR/xslt#element-output>

但し、実装は必ずしもこの指定を反映させる必要はありません。 特に、結果木を出力せずに次の処理にまわすような場合は全く反映できない (する必要もない) かもしれません。

[2] 属性:

属性名属性値既定値説明状態出典
cdata-section-elementsqnamesCDATA区間使用要素
saxon:character-representationSaxon 6
saxon:character-representationSaxon 8
charsetcharset符号化方式
xalan:content-handlerXALAN
doctype-public文字列公開識別子
doctype-system文字列システム識別子
xalan:entitiesXALAN
indent'yes' / 'no'字下げ
xalan:indent-amountXALAN
saxon:indent-spacesSaxon 6
saxon:indent-spacesSaxon 8
media-type媒体型媒体型
methodQName出力形式
saxon:omit-meta-tagSaxon 6
xalan:omit-meta-tagXALAN
omit-xml-declaration'yes' / 'no'XML 宣言省略
standalone'yes' / 'no'単独文書
xalan:use-url-escapingXALAN
version名前字句出力形式の版

xslt:output 要素が複数ある場合、 cdata-section-element 属性についてはすべての QName を併合, それ以外の属性については輸入優先度最高のものを採用します。 輸入優先度同位の時は誤りで、通知するか又は最後のものを採用します。 以上で定まらない属性の値は既定値となりますが、 既定値は method に依存します。 [3] method の既定値は、

の条件が揃えば html, それ以外のときは xml です。

なお、 method 属性の値は html, xml, text 又は接頭辞つきの修飾名です。

[4] encoding 属性の値は出力する符号化方式の名前で、 1*( %x21-7E ) でなければなりません。 この名前は IANAcharset 登録簿の名前か、 または x- で始まる名前であるべきです。

media-type 属性の値は媒体型ですが、 charset 引数は指定するべきではありません。 text/* 媒体型の場合は自動的に encoding を参考に適当な名前の charset 引数を与えるべきです。

[5] >>4 とはいっても、実装側は「text/* の場合は与えるべき」であって、「与えなければならない」 じゃないですし、非 text/* のときは与えるべきでさえないわけです。 だから、例えば encoding="iso-2022-jp" media-type="application/xhtml+xml; charset=iso-2022-jp" のように多少面倒でも明記しておいた方がいいんじゃないですかね?

[6] 出力方式 (method):

method出力方式状態出典
htmlHTML出力方式W3C 勧告XSLT 1.0
text文出力方式W3C 勧告XSLT 1.0
xmlXML出力方式W3C 勧告XSLT 1.0
xt:nxml非 XML 出力方式XT
xtj:com.jclark.xsl.sax.NXMLOutputHandler非 XML 出力方式 (= xt:nxml)XT