HTML出力方式

HTML 出力方式 (XSLT)

XSLT 1.0 の定義

[1] HTML 出力方式 (HTML output method) では、結果木HTMLとして出力します。

[10] 仕様書:

[2] xslt:output 要素の version 属性で HTML の版を指定します。既定値は 4.0 ですが、これは望ましくありません。スタイルシート著者は 4.01 と明示するべきです。 (HTML4.0HTML4.01 に置き換えられました。)

版番号を指定するだけでは十分ではありません。 doctype-public 属性及び/又は doctype-system 属性が指定されていれば、 文書型宣言が出力されるので、 これも合わせて指定しておく必要があります。

[3] null 名前空間以外の要素は、 XML出力方式と同じように出力するべきです。 Null 名前空間では、 >>4-5、>>11>>13 のような配慮があります。

[4] 強制空要素では、開始タグだけを出力し、 終了タグは省略するべきです。

style, script 両要素では内容は SGML CDATA として扱います。 ちなみに、 cdata-section-elements は HTML 出力方式では無効です。

pic> にするべきです。

[5] URI が値になる属性では、 HTML 4.0 勧告推奨されている方法で符号化 (非 ASCII 文字 (非 URI 安全文字じゃないよ。)UTF-8 に変換した上で URI符号化) するべきです。

[12] URI並び属性値である profilearchive にも適用されるのかは不明です。
IRI の項も参照してください。

[11] 真偽値属性値は最小化して属性名を省略した形とするべきです。

[13] 属性値 (CDATA に限らず。) に文字列 &{ が含まれる時 (スクリプト・マクロ) は、 これを &{逃避せずにそのまま出力します。

[6] indent 属性の既定値は yes です。 字下げするときには、 HTML UA の解釈に変化がでないであろうように(謎)するべきです。

[7] head 要素があれば、 その最初の子要素として <meta http-equiv="Content-Type" content="charset name"> みたいなのを出力するべきです。

必要なら当該 HTML で規定されている文字実体参照を使っても構いません。 でも実装は、公開識別子又はシステム識別子を出力する場合に限って使うべきでしょうね。

[8] media-type 属性の既定値は text/html です。

XSLT 2.0 / XQuery 1.0 の定義

・・・

[14] 仕様書:

[15] 附属書 C に百分率符号化の対象になる HTML 属性の一覧があります。 それによると applet 要素archivecode は対象外だそうです。 object 要素archivehead 要素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>