[1] HTML 出力方式 (HTML output method) では、結果木を HTMLとして出力します。
[10] 仕様書:
[2] xslt:output
要素の
version
属性で HTML
の版を指定します。既定値は 4.0
ですが、これは望ましくありません。スタイルシート著者は
4.01
と明示するべきです。
(HTML4.0 は HTML4.01 に置き換えられました。)
版番号を指定するだけでは十分ではありません。
doctype-public
属性及び/又は
doctype-system
属性が指定されていれば、
文書型宣言が出力されるので、
これも合わせて指定しておく必要があります。
[3] null 名前空間以外の要素は、 XML出力方式と同じように出力するべきです。 Null 名前空間では、 >>4-5、>>11、>>13 のような配慮があります。
[4] 強制空要素では、開始タグだけを出力し、 終了タグは省略するべきです。
style
, script
両要素では内容は SGML CDATA として扱います。
ちなみに、 cdata-section-elements
は HTML 出力方式では無効です。
[5] URI が値になる属性では、 HTML 4.0 勧告で推奨されている方法で符号化 (非 ASCII 文字 (非 URI 安全文字じゃないよ。) を UTF-8 に変換した上で URI符号化) するべきです。
[11] 真偽値属性値は最小化して属性名を省略した形とするべきです。
[13]
属性値 (CDATA に限らず。) に文字列
&{
が含まれる時 (スクリプト・マクロ) は、
これを &{ と逃避せずにそのまま出力します。
[6] indent
属性の既定値は yes
です。
字下げするときには、 HTML UA の解釈に変化がでないであろうように(謎)するべきです。
[7] head
要素があれば、
その最初の子要素として
<meta http-equiv="Content-Type
" content="charset name">
みたいなのを出力するべきです。
必要なら当該 HTML で規定されている文字実体参照を使っても構いません。 でも実装は、公開識別子又はシステム識別子を出力する場合に限って使うべきでしょうね。
[8] media-type
属性の既定値は
text/html
です。
version
属性があるからそれで十分というお考えなのかな? でもそしたら外部識別子をわざわざ指定できる嬉しさが6割引くらいじゃない? それに HTML2.x の立場は・・・。[14] 仕様書:
[15] 附属書 C に百分率符号化の対象になる HTML 属性の一覧があります。
それによると applet
要素の
archive
や code
は対象外だそうです。
object
要素の
archive
や
head
要素の
profile
は対象内です。
a
要素の name
属性まで対象内になっているのですが、これは附属書 C が引用している HTML 4
の注記の誤読、というか HTML 4 の注記の意味が不明瞭なせいでしょうな。
[16] XSLT 2.0 and XQuery 1.0 Serialization (Second Edition) ( ( 版)) <http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#html-output>
profile
やarchive
にも適用されるのかは不明です。