[5] xml-stylesheet
処理指令
を使うと、その XML 文書にスタイル・シートを関連付けることができます。
[3] xml-stylesheet
処理指令は、
その対象名が xml-stylesheet
,
データは開始タグの属性指定並びと同じ構文です。
[62] xml-stylesheet
は XML でしか使えませんが、
現在では XML が使われることはほとんどありませんから、最早出番もあまりなさそうです。
[63] HTML の link
要素で同じことを記述でき、
そちらは HTML文書でもXML文書でも使えますから、常にそちらを使うのが単純です。
[33] 処理指令情報項目の対象
特性が
xml-stylesheet
であって、その処理指令情報項目が文書情報項目の子供
特性の中で要素情報項目より前にあるか、または文書型宣言情報項目の子供
特性の中にある場合、その処理指令情報項目は潜在 xml-stylesheet
処理指令であるといいます。 >>43
[37] 潜在 xml-stylesheet
処理指令は、
文字列から擬似属性を構文解析する規則を適用した構文解析結果が誤りではないとき、
xml-stylesheet
処理指令であると言います。 >>43
[38] 文書は xml-stylesheet
処理指令
以外に対象
特性が
xml-stylesheet
である処理指令情報項目を用いてはなりません。 >>43
[48] >>38 の規定により、 xml-stylesheet
処理指令は文書要素よりも前
(XML でいうところの前書き) にしか書くことができません。
第1版は XML の構文ベースで定義されていたので、
前書きに入れなければならないと規定されていました >>45。
[49] ただしXMLでは外部部分集合実体や引数実体が処理されることが保障されないため、 第1版も第2版も注意を促しています。更に第2版は >>39 のように文書型宣言内での利用を原則禁止しています。
[39] 文書は文書型宣言情報項目の子供
特性で
xml-stylesheet
処理指令を使うべきではありません。 >>43
[50] 現実には、 xml-stylesheet
処理指令が文書要素の内側で使われることすら存在しています。
(それが実際に実装によってどう処理されるのかはまた別ですが・・・。)
例えば W3C勧告であるところの XHTML 1.1 は link
要素と並べて
xml-stylesheet
処理指令を記述しています。
[44] xml-stylesheet
処理指令には属性を指定できます。
XML では属性といえば要素の開始タグに指定するものなので、
正式にはこれを「属性」とはいわず、「擬似属性」といわれています。
alternate | 'yes' / 'no' | 'no' | 代替か否か |
charset | charset | (暗示) | charset |
href | URI | 必須 | URI |
media | 媒体記述子 | (暗示) | 対象媒体 |
title | CDATA | (暗示) | 題 |
type | 媒体型 | (暗示) | 媒体型 |
内容
特性を文字列として文字列から擬似属性を構文解析する規則を呼び出し、その構文解析結果をxml-stylesheet応用に報告します。 >>43Link:
頭欄など文書の外側で指定されたスタイル・シートへのリンクは、 xml-stylesheet
処理指令による関連付けよりも前に作られた関連付けとみなします。 >>43[76] これ >>75 の推測が事実ならWebブラウザーの非互換変更に振り回された被害者なんだよなー。 この種の不具合だとなぜか悪いことしたWebブラウザー事業者ではなく善意のWebサービス運営者側ばかりが非難されるという理不尽。
[45] Associating Style Sheets with XML documents は、
xml-stylesheet
処理指令を定義していた仕様書です。
1999年6月にW3C勧告となりました。
[66] >>65 には重要な訂正
(type
擬似属性は必須ではなく、省略可。)
が含まれています。
[8] この処理指令は、 XML 文書にスタイル・シートを関連付ける (XML 文書内での記述の) 標準化された方法がない一方で、 その需要に応えるべくとりあえずということで勧告されました。
[52] 仕様書中にも、スタイル・シートの関連付けの方法には議論があること、 処理指令を使うことが望ましい慣習であるとは言い切れないことが断られつつも、 主要ブラウザーのリリースが迫っているから急いで勧告にした、などと書いてあります。
[53] しかしながら、これに代わる方法はまだ規定されていません。 今後も当分この処理指令が使われ続けることでしょう。
[51] この勧告は元々は XLink WG の担当でしたが、 その重要性から XML 中核 WG に移管されたそうです。
[70] そもそも論として、本来 XHTML には既に link
要素があり、
XML名前空間を通じて任意のXML文書にこれを埋め込むことは可能なのですから、
XML だからといって特別これにかわる手段を提供する必要はなかったはずです。
実際 xml-stylesheet
処理指令の機能は link
要素と構文的にも意味的にもほとんど同じです。
[71] にもかかわらず新機能が必要とされたのは、
新しい XML の世代の新しい機能が必要だとされた時代の空気や、
HTML WG と関係の薄い XML 開発チームの NIH、
HTML 以外の XML応用が HTML のうち link
要素だけ実装するわけにいかないという仕様書構成に関する信仰などが原因でしょうか。
[67] 2009年に W3C XML中核作業部会で改訂が始まり、 2010年10月に第2版 xml-stylesheet 1.0 2e が W3C勧告となりました。
[46] 擬似属性の値の指定 (属性値表記に対応する部分) も属性の場合と同じですが、一般実体参照は定義済み実体 5種類しか使うことが出来ません。 (その他の文字は数値文字参照を使うことになります。)
また、処理指令の構文上、 ?>
という文字列を含めることも出来ません。その場合は
?>
とでもしなければなりません。
[47] >>46 第1版は EBNF で文字列として定義していましたが、第2版はXML情報集合で定義していて、
EBNF は説明でしかないので、第2版に従うなら擬似属性の属性値に「?>
」が
(エスケープされずに) 含まれることも一応認められてはいるのですが、
XML の文字列として表現することができないのは変わりありません。
(DOM や XDM では存在できますが。)
[6] alternate
擬似属性を除いて、
対応する HTML4 の link
要素型の属性と同じ意味を持ちます。
alternate
擬似属性が no
なら HTML 4 ではリンク型が
rel="stylesheet"
, yes
なら
rel="stylesheet alternate"
に対応します。
[2] 勧告では type 擬似属性が必須 (REQUIRED) になっていますが、 Errata で暗示 (IMPLIED) の誤りとされています。
必須だとしたら内容折衝ができないことになりますが、 省略可に訂正されたので <?xml-stylesheet href="foo"?> とだけ書けば十分ということになります。
[4] >>2 draft でずっと IMPLIED ではなく REQUIRED だったのですから、最後に変更されたけど修正し忘れたんでしょう。
[7] href
擬似属性の値は URI参照ですが、
相対URI はもちろん、素片識別子だけのもの
(例: #foo) でも構いません。
この場合、同じ文書内のもの (XHTML の style
要素型とか。) を指すことになります。
xml-stylesheet
処理命令を独自拡張している。サーバー側で処理されるからネットワークは流れないとはいえ、感心できないなあ。prolog
(前書き) の中で処理指令が認められている場所です。つまり、 XML宣言の直後から文書要素の開始タグの前までです。また、 DTD 中にもかけるみたいです。 (前書き内、では曖昧だと思うんですが、注記を読むと確実に、外部部分集合に書くことも認められているようです。もっとも、その注記によれば外部部分集合や外部引数実体に書くと妥当性を検証しないXML処理系でどうなるかわからないので注意しましょうと言っています。)type
擬似属性がないと無視します。また、 DTD 中にこの処理指令がある場合も内部/外部問わず無視します。type
擬似属性の有無にかかわらず解釈します。 DTD の内部部分集合にある場合も理解します。 (外部部分集合は元々読みません。)[15] >>1 なくなってる。移転先 −> http://dock.baykit.org/bsb13?FAQ&l=jp#13
client
擬似属性 (yes
or no
) で、鯖側処理と蔵側処理を分けるらしい。
media
擬似属性は特定のブラウザ名を指定できるらしい (使える名前の一覧は見つからず)。
例:
<?xml-stylesheet media="explorer" client="yes" href="menu-ie.xsl" type="text/xsl"?><?xml-stylesheet media="netscape" href="menu.xsl" type="text/xsl"?><?xml-stylesheet media="lynx" href="menu-lynx.xsl" type="text/xsl"?><?xml-stylesheet href="menu-default.xsl" type="text/xsl"?> (名無しさん)
[16] Bug 61675 - Can't link XML document to embedded stylesheet (Support <?xml-stylesheet href="#local" type="text/css" ?>) https://bugzilla.mozilla.org/show_bug.cgi?id=61675
[18] How to add style to XML http://www.w3.org/Style/styling-XML#Embedded
[19] C.14. Referencing Style Elements when serving as XML IW:XHTML1:"#C_14"
(名無しさん)
[20] www-style@w3.org from February 2006: by thread http://lists.w3.org/Archives/Public/www-style/2006Feb/thread.html#msg60 (名無しさん)
[21] 2.7 Embedding Stylesheets IW:XSLT1:"#section-Embedding-Stylesheets"
[23] www-xml-stylesheet-comments@w3.org Mail Archives http://lists.w3.org/Archives/Public/www-xml-stylesheet-comments/ (名無しさん)
[24] FW: XML Style Sheet PI and fragment IDs from Paul Grosso on 2005-02-09 (www-xml-stylesheet-comments@w3.org from February 2005) http://lists.w3.org/Archives/Public/www-xml-stylesheet-comments/2005Feb/0000.html (名無しさん)
[25] 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) http://lists.w3.org/Archives/Public/www-xml-linking-comments/2006OctDec/0000.html (名無しさん)
[26]
>>21
XSL Transformations (XSLT) Version 2.0 (2007-01-19 07:23:20 +09:00
版) http://www.w3.org/TR/2007/REC-xslt20-20070123/#embedded
(名無しさん 2007-01-25 12:43:25 +00:00)
[27]
A Proposal for XSL (2006-09-22 18:57:20 +09:00
版) http://www.w3.org/TR/NOTE-XSL.html#2.2
[28]
Regarding XML Core WG agenda item on Associating stylesheets (Grosso, Paul 著, 2007-04-02 23:37:13 +09:00
版) http://lists.w3.org/Archives/Public/public-xml-core-wg/2007Apr/0001.html
2年待ったらなにもしないという結論が帰ってきたからなにもしないでおk?? はぁ?? (名無しさん 2007-04-03 13:16:41 +00:00)
[54] include note about XSLT from Norm · dab090a · w3c/html ( ( 版)) https://github.com/w3c/html/commit/dab090a81e0269b1ad63922ebb5f897ade3488e0
[17] 17976 – xml-stylesheet with type=text/xsl needs to be handled explicitly ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=17976
[22] 126841 – alternate stylesheets (xsl) for xml ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=126841
[55] 338621 – Feed View overrides XSLT stylesheet defined in XML document ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=338621
[56] 61675 – Can't link XML document to embedded stylesheet (Support <?xml-stylesheet href="#local" type="text/css" ?>) ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=61675
[68] http://www.w3.org/1999/XSL/Transform ( ()) http://www.bbwtest.info/~nandaka_furari/framexs/framexs.xml
[69] XSL Transformations (XSLT) Version 3.0 () https://www.w3.org/TR/2017/REC-xslt-30-20170608/#embedded