<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>XSLT 1.0 の定義</h1><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> <dfn>HTML 出力方式</dfn> (HTML output method)
では、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">結果木</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor>として出力します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 仕様書:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XSLT 1.0</anchor><ul><li><cite>16.2 HTML Output Method</cite>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/xslt#section-HTML-Output-Method" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.w3.org/TR/xslt#section-HTML-Output-Method</anchor-external></li></ul></li></ul></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> <code class="XSLTe"><var>xslt:</var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">output</anchor></code> 要素の
<code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">version</anchor></code> 属性で HTML 
の版を指定します。既定値は <code class="XSLTa">4.0</code>
ですが、これは望ましくありません。スタイルシート著者は
<code class="XSLTa">4.01</code> と明示するべきです。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4.0</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML4.01</anchor> に置き換えられました。)</p><p>版番号を指定するだけでは十分ではありません。
<code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">doctype-public</anchor></code> 属性<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">及び/又は</anchor>
<code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">doctype-system</anchor></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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> null 名前空間以外の要素は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML出力方式</anchor>と同じように出力するべきです。
Null 名前空間では、 <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>-5、<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;11</anchor-internal>、<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;13</anchor-internal> のような配慮があります。</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> <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>は省略するべきです。</p><p><code class="HTML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">style</anchor></code>, <code class="HTML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">script</anchor></code>
両要素では内容は SGML <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CDATA</anchor> として扱います。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ちなみに、 <code xmlns="http://www.w3.org/1999/xhtml" class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cdata-section-elements</anchor></code> は HTML 出力方式では無効です。</weak></p><p><code class="SGML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">pic</anchor></code> は <code class="SGML">&gt;</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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor> が値になる属性では、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4.0</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>されている方法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor> (非 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> 
文字 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(非 URI 安全文字じゃないよ。)</weak> を 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> に変換した上で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI符号化</anchor>) するべきです。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</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>である
<code xmlns="http://www.w3.org/1999/xhtml" class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">profile</anchor></code> や <code xmlns="http://www.w3.org/1999/xhtml" class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">archive</anchor></code>
にも適用されるのかは不明です。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> の項も参照してください。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 
<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="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> 
属性値 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(CDATA に限らず。)</weak> に文字列
<code>&amp;{</code> が含まれる時 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト・マクロ</anchor>) は、
これを <samp class="HTML">&amp;amp;{</samp> と<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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end>  <code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">indent</anchor></code>
属性の既定値は <code class="XSLTa">yes</code> です。
字下げするときには、 HTML <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UA</anchor> の解釈に変化がでないであろうように(謎)するべきです。</p><p><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> <code class="HTML"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">head</anchor></code> 要素があれば、
その最初の子要素として
<samp class="HTML">&lt;<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">meta</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http-equiv</anchor>=&quot;<code class="HTTP"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Type</anchor></code>&quot; <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">content</anchor>=&quot;<var>charset name</var>&quot;&gt;</samp>
みたいなのを出力するべきです。</p><p>必要なら当該 HTML で規定されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字実体参照</anchor>を使っても構いません。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">でも実装は、公開識別子又はシステム識別子を出力する場合に限って使うべきでしょうね。</weak></p><p><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"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">media-type</anchor></code> 属性の既定値は
<code class="MIME"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">text/html</anchor></code> です。<ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal>,<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;7</anchor-internal> 「当該 HTML で規定されている」ということは、当然文字実体参照を使う実装はその版でどの実体が定義されているのかを知っていないといけません。外部識別子で識別される <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DTD</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>にしないと・・・と書いてて思ったのですが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML宣言</anchor>の指定がないのはちょっと不備ですよね。 SGML 宣言がないと、文字参照でどういう<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>がどれだけ許されるのかも分からないと不便。そういうのって、 <code class="XSLTa">version</code> 属性があるからそれで十分というお考えなのかな? でもそしたら外部識別子をわざわざ指定できる嬉しさが6割引くらいじゃない? それに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML2.x</anchor> の立場は・・・。</li></ul></p></section><section><h1>XSLT 2.0 / XQuery 1.0 の定義</h1><ed xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">・・・</ed><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 仕様書:<ul><li><cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">勧告</anchor>)<ul><li><csection xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">C List of URI Attributes</csection>
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123/#list-of-uri-attributes" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123/#list-of-uri-attributes</anchor-external></li></ul></li></ul></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 附属書 C に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>の対象になる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の一覧があります。
それによると <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">applet</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">archive</anchor></code> や <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">code</anchor></code> は対象外だそうです。
<code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">object</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">archive</anchor></code> や
<code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">head</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の
<code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">profile</anchor></code>
は対象内です。</p><p><code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">a</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>の <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">name</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>まで対象内になっているのですが、これは附属書 C が引用している <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor>
の注記の誤読、というか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML 4</anchor> の注記の意味が不明瞭なせいでしょうな。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)</cite>
( (<time>2010-12-17 00:08:20 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#html-output" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI">http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#html-output</anchor-external></p></section></body></html>