[5] [DFN[[CODE(XML)[xml-stylesheet]] [[処理指令]]]] を使うと、その [[XML]] [[文書]]に[[スタイル・シート]]を関連付けることができます。 [3] [[W3C]] [[勧告]] ''Associating Style Sheets with XML documents'' [WEAK[(スタイル・シートの XML 文書との関連付け)]] で規定されています。 ''Errata for REC-xml-stylesheet-19990629'' には重要な訂正 [WEAK[([CODE(XML)[type]] 擬似属性は必須ではなく、省略可。)]] が含まれています。 [3] [CODE(XML)[xml-stylesheet]] 処理指令は、 その[[対象名]]が [CODE(XML)[xml-stylesheet]], [[データ]]は[[開始タグ]]の[[属性指定並び]]と同じ構文です。 [WEAK[(それに含まれる属性と同じ構文のものは、 XML 的な意味では属性ではないので、[DFN[[[擬似属性]]]]と呼びます。)]] 擬似属性: ,[CODE(XML)[[[alternate]]]] ,'yes' / 'no' ,'no' ,代替か否か ,[CODE(XML)[[[charset]]]] ,[[charset]] ,(暗示) ,charset ,[CODE(XML)[[[href]]]] ,[[URI]] ,必須 ,URI ,[CODE(XML)[[[media]]]] ,[[媒体記述子]] ,(暗示) ,対象媒体 ,[CODE(XML)[[[title]]]] ,[[CDATA]] ,(暗示) ,題 ,[CODE(XML)[[[type]]]] ,[[媒体型]] ,'''(暗示)''' ,媒体型 擬似属性の値の指定 ([[属性値表記]]に対応する部分) も属性の場合と同じですが、[[一般実体参照]]は[[定義済み実体]] 5種類しか使うことが出来ません。 (その他の文字は[[数値文字参照]]を使うことになります。) また、処理指令の構文上、 [CODE(XML)[?>]] という文字列を含めることも出来ません。その場合は [CODE(XML)[?&[[gt]];]] とでもしなければなりません。 [6] [CODE(XML)[alternate]] 擬似属性を除いて、 対応する [[HTML4]] の [CODE(HTML)[[[link]]]] [[要素型]]の属性と同じ意味を持ちます。 [CODE(XML)[alternate]] 擬似属性が [CODE(XML)[no]] なら HTML 4 では[[リンク型]]が [CODE(HTML)[[[rel]]="[[stylesheet]]"]], [CODE(XML)[yes]] なら [CODE(HTML)[rel="stylesheet [[alternate]]"]] に対応します。 [2] 勧告では [[type]] 擬似属性が必須 ([[REQUIRED]]) になっていますが、 Errata で暗示 ([[IMPLIED]]) の誤りとされています。 必須だとしたら[[内容折衝]]ができないことになりますが、 省略可に訂正されたので [SAMP(XML)[]] とだけ書けば十分ということになります。 [4] >>2 draft でずっと [[IMPLIED]] ではなく [[REQUIRED]] だったのですから、最後に変更されたけど修正し忘れたんでしょう。 [7] [CODE(XML)[href]] 擬似属性の値は [[URI参照]]ですが、 [[相対URI]] はもちろん、[[素片識別子]]だけのもの (例: [SAMP(URI)[#foo]]) でも構いません。 この場合、同じ文書内のもの ([[XHTML]] の [CODE(HTML)[[[style]]]] 要素型とか。) を指すことになります。 [8] この処理指令は、 XML 文書にスタイル・シートを関連付ける (XML 文書内での記述の) 標準化された方法がない一方で、 その需要に応えるべくとりあえずということで勧告されました。 しかしながら、これに代わる方法はまだ規定されていません。 今後も当分この処理指令が使われ続けることでしょう。 この勧告は元々は [[XLink]] [[WG]] の担当でしたが、 その重要性から XML 中核 WG に移管されたそうです。 - [1] ''Baykit Stylesheet Broker FAQ'' : 困ったことに、 [CODE(XML)[xml-stylesheet]] 処理命令を独自拡張している。サーバー側で処理されるからネットワークは流れないとはいえ、感心できないなあ。 - [9] この処理指令を書けるのは、生成規則 [CODE(XML)[prolog]] ([[前書き]]) の中で処理指令が認められている場所です。つまり、 [[XML宣言]]の直後から[[文書要素]]の[[開始タグ]]の前までです。また、 [[DTD]] 中にもかけるみたいです。 [WEAK[(前書き内、では曖昧だと思うんですが、注記を読むと確実に、[[外部部分集合]]に書くことも認められているようです。もっとも、その注記によれば外部部分集合や[[外部引数実体]]に書くと[[妥当性を検証しない]][[XML処理系]]でどうなるかわからないので注意しましょうと言っています。)]] - [10] [[WinIE6.0]] と [[Mozilla]] 1.4βで試してみました。 - [11] WinIE は、 [CODE(XML)[type]] 擬似属性がないと無視します。また、 DTD 中にこの処理指令がある場合も内部/外部問わず無視します。 - [12] Mozilla はもちろん [CODE(XML)[type]] 擬似属性の有無にかかわらず解釈します。 DTD の内部部分集合にある場合も理解します。 (外部部分集合は元々読みません。) - [13] いずれの場合も、前書き以外、すなわち文書要素内や文書要素の後にあっても無視するみたいです。 - [14] >>9,>>13 [[W3C]] もこんなミスを・・・ [15] >>1 なくなってる。移転先 −> [CODE(XMLa)[[[client]]]] 擬似属性 ([CODE(XML)[yes]] or [CODE(XML)[no]]) で、鯖側処理と蔵側処理を分けるらしい。 [CODE(XMLa)[media]] 擬似属性は特定のブラウザ名を指定できるらしい (使える名前の一覧は見つからず)。 例: > [SAMP(XML)[]] ([[名無しさん]]) [16] [CITE[Bug 61675 - Can't link XML document to embedded stylesheet (Support )]] ([[名無しさん]]) [17] [CITE[Index of /tests/adhoc/xml/styling/pi/internal]] ([[名無しさん]]) [18] [CITE[How to add style to XML]] ([[名無しさん]]) [19] [CSECTION@en[C.14. Referencing Style Elements when serving as XML]] ([[名無しさん]]) [20] [CITE[www-style@w3.org from February 2006: by thread]] ([[名無しさん]]) [21] [CSECTION@en[2.7 Embedding Stylesheets]] ([[名無しさん]]) [22] [CITE[Associating Style Sheets with XML documents]] ([[名無しさん]]) [23] [CITE[www-xml-stylesheet-comments@w3.org Mail Archives]] ([[名無しさん]]) [24] [CITE[FW: XML Style Sheet PI and fragment IDs from Paul Grosso on 2005-02-09 (www-xml-stylesheet-comments@w3.org from February 2005)]] ([[名無しさん]]) [25] [CITE[Re: xml-stylesheet base resource identifier from Henry S. Thompson on 2006-10-02 (www-xml-linking-comments@w3.org from October to December 2006)]] ([[名無しさん]]) [26] >>21 [CITE@EN[XSL Transformations (XSLT) Version 2.0]] ([CODE[2007-01-19 07:23:20 +09:00]] 版) ([[名無しさん]] [WEAK[2007-01-25 12:43:25 +00:00]]) [27] [CITE[A Proposal for XSL]] ([TIME[2006-09-22 18:57:20 +09:00]] 版) ([[名無しさん]])