xml-stylesheet

xml-stylesheet 処理指令 (XML)

[5] xml-stylesheet 処理指令 を使うと、その XML 文書スタイル・シートを関連付けることができます。

[3] xml-stylesheet 処理指令は、 その対象名xml-stylesheet, データ開始タグ属性指定並びと同じ構文です。

代替

[62] xml-stylesheetXML でしか使えませんが、 現在では XML が使われることはほとんどありませんから、最早出番もあまりなさそうです。

[63] HTMLlink 要素で同じことを記述でき、 そちらは HTML文書でもXML文書でも使えますから、常にそちらを使うのが単純です。

定義

[33] 処理指令情報項目対象 (target) 特性xml-stylesheet であって、その処理指令情報項目文書情報項目子供 (children) 特性の中で要素情報項目より前にあるか、または文書型宣言情報項目子供 (children) 特性の中にある場合、その処理指令情報項目潜在 (potential) xml-stylesheet 処理指令 (processing instruction) であるといいます。 >>43

[37] 潜在 xml-stylesheet 処理指令は、 文字列から擬似属性を構文解析する規則を適用した構文解析結果誤りではないとき、 xml-stylesheet 処理指令 (processing instruction) であると言います。 >>43

[38] 文書xml-stylesheet 処理指令 (processing instruction) 以外対象 (target) 特性xml-stylesheet である処理指令情報項目を用いてはなりません>>43

文脈

[48] >>38 の規定により、 xml-stylesheet 処理指令文書要素よりも前 (XML でいうところの前書き (prolog) ) にしか書くことができません。 第1版は XML の構文ベースで定義されていたので、 前書きに入れなければならないと規定されていました >>45

[49] ただしXMLでは外部部分集合実体引数実体処理されることが保障されないため、 第1版も第2版も注意を促しています。更に第2版は >>39 のように文書型宣言内での利用を原則禁止しています。

[39] 文書文書型宣言情報項目子供 (children) 特性xml-stylesheet 処理指令 (processing instruction) を使うべきではありません>>43

[50] 現実には、 xml-stylesheet 処理指令文書要素の内側で使われることすら存在しています。 (それが実際に実装によってどう処理されるのかはまた別ですが・・・。) 例えば W3C勧告であるところの XHTML 1.1link 要素と並べて xml-stylesheet 処理指令を記述しています。

この文書は XHTML でありながら text/html ですが、 この時代はまだそれが一般的でした。 (といっても XHTML はまだ一般的ではありませんでしたが、その中では一般的でしたw)

擬似属性

[44] xml-stylesheet 処理指令には属性を指定できます。 XML では属性といえば要素開始タグに指定するものなので、 正式にはこれを「属性」とはいわず、「擬似属性」といわれています。

alternate'yes' / 'no''no'代替か否か
charsetcharset(暗示)charset
hrefURI必須URI
media媒体記述子(暗示)対象媒体
titleCDATA(暗示)
type媒体型(暗示)媒体型

[40] 文書は仕様上認められている以外の擬似属性を指定してはなりません>>43

処理モデル

仕様書

CSS の利用

XSLT1 の利用

[76] これ >>75 の推測が事実ならWebブラウザー非互換変更に振り回された被害者なんだよなー。 この種の不具合だとなぜか悪いことしたWebブラウザー事業者ではなく善意Webサービス運営者側ばかりが非難されるという理不尽。

[77] ZIP ファイルで包まれるという謎仕様には目をつぶりつつ... (数時間後に送られてくるってことはメールに添付されてるとかなのかな?)

歴史

第1版

[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 開発チームの NIHHTML 以外の XML応用HTML のうち link 要素だけ実装するわけにいかないという仕様書構成に関する信仰などが原因でしょうか。

[72] XHTML の独自のハイパーリンク (a 要素) を捨てて XLink に移行するのが好ましいという人がいたように、 マーク付け言語固有の機能を排除して XML 世代の新しい語彙の組み合わせに移行していくべき、 という時代の空気がありました。

第2版

[67] 2009年に W3C XML中核作業部会で改訂が始まり、 2010年10月に第2版 xml-stylesheet 1.0 2eW3C勧告となりました。

[73] CEA-2014-B

メモ

[46] 擬似属性の値の指定 (属性値表記に対応する部分) も属性の場合と同じですが、一般実体参照定義済み実体 5種類しか使うことが出来ません。 (その他の文字は数値文字参照を使うことになります。)

また、処理指令の構文上、 ?> という文字列を含めることも出来ません。その場合は ?> とでもしなければなりません。

[47] >>46 第1版は EBNF で文字列として定義していましたが、第2版はXML情報集合で定義していて、 EBNF は説明でしかないので、第2版に従うなら擬似属性属性値に「?>」が (エスケープされずに) 含まれることも一応認められてはいるのですが、 XML文字列として表現することができないのは変わりありません。 (DOMXDM では存在できますが。)

[6] alternate 擬似属性を除いて、 対応する HTML4link 要素型の属性と同じ意味を持ちます。 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) でも構いません。 この場合、同じ文書内のもの (XHTMLstyle 要素型とか。) を指すことになります。

[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

[57] ( 版) http://d.hatena.ne.jp/hatenadiary/rss

<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet href="http://d.hatena.ne.jp/hatenadiary/rssxsl" type="text/xsl" media="screen"?>

rdf:RDF

[58] ( 版) http://blog.excite.co.jp/editorcafe/index.xml

<?xml version="1.0" encoding="utf-8" ?>

<?xml-stylesheet href="/editorcafe/pg/xsl/rss_xsl.asp?blogurl=editorcafe" type="text/xsl" media="screen" ?>

<rss version="2.0"

[59] ( 版) http://blog.excite.co.jp/editorcafe/atom.xml
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/editorcafe/pg/xsl/atom_xsl.asp?blogurl=editorcafe" type="text/xsl" media="screen" ?>
<feed version="0.3"
[60] ( 版) http://rss.rssad.jp/rss/slashdot/slashdot.rss
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="../../../../../css/rss/feedRss1.xsl" media="screen" type="text/xsl"?>
rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:admin="http://webns.net/mvcb/"  
[61] ( 版) http://feedpress.me/automagic
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~files/feed.xsl"?>
<rss xmlns:itunes="http://www.itunes.com/DTDs/Podcast-1.0.dtd" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedpress="https://feed.press/xmlns" version="2.0">

[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