著作権 © 1999 W3C (マサチューセッツ工科大学, フランス国立情報処理自動化研究所, 慶應義塾大学). すべての権利が留保されている。W3Cの免責(liability), 商標(trademark), 文書利用(document use), ソフトウェア使用許諾(software licensing)規則が適用される。
この仕様書は、XML文書のプロローグに xml-stylesheet
というターゲットの1個以上の処理命令を組み込むことにより、スタイルシートをその文書に結びつけることを可能にするものである。
この文書はW3Cのワーキングドラフトである。これがワーキングドラフト(作業草稿)または勧告案である間は、変更に服する。この文書は、何時にても他のW3C文書によって更新され、置換され、または廃止されることがある。W3Cワーキングドラフトを参照資料として利用したり、「進行中の作業」以外のものとして引用することは不適切である。
この仕様書は以前は勧告として提案されていたが、検討のために取り置かれていた時間内に受領した検討の量が少なすぎると思われるので、結局ワーキングドラフトの状態に戻されたものである。新しい検討期間は1999年4月末頃に始まるだろう。
この作業は、W3C XML アクティビティの一部である。
xml-stylesheet
処理命令
xml-stylesheet
処理命令
スタイルシートは、ターゲットが xml-stylesheet
である処理命令を使うことにより、XML[XML10] 文書に結びつけることができる。この処理命令は、HTML 4.0 の <LINK REL="stylesheet">
[HTML40] の挙動に従う。
xml-stylesheet
処理命令は開始タグと同じように解析されるが、定義済み実体(entity)以外の実体を参照してはならないという例外がある。
以下の基礎文法は、XML勧告[XML10] の基礎文法と同じ表記法を使って与えられる。基礎文法の中にあるがここで定義されていない記号は、XML勧告の中で定義される。
xml-stylesheet
処理命令
[1] | StylesheetPI | ::= | '<?xml-stylesheet' (S PseudoAtt)* S? '?>' |
---|
[2] | PseudoAtt | ::= | Name S? '=' S? PseudoAttValue |
---|
[3] | PseudoAttValue | ::= | '"' ([^"<&] | CharRef | PredefEntityRef)* '"' | |
---|---|---|---|---|
| "'" ([^'<&] | CharRef | PredefEntityRef)* "'" |
[4] | PredefEntityRef | ::= | '&' | '<' | '>' | '"' | ''' |
---|
PseudoAttValue の中では、CharRef または PredefEntityRef は、通常のXML属性値におけるのと同じように解釈される。疑似属性の実際値は、各参照が参照するキャラクタによって置き換えられた後の値である。この遅延は、XMLプロセッサによって自動的に実行されるものではない。
xml-stylesheet
処理命令は、XML文書のプロローグの中ならばどこででも許される。XMLの文法は、プロローグの中で処理命令が許される場所を制約している。xml-stylesheet
処理命令は、その他の処理命令と同じく、これらの制約に服する。
以下の疑似属性が定義される。
href CDATA #REQUIRED type CDATA #REQUIRED title CDATA #IMPLIED media CDATA #IMPLIED charset CDATA #IMPLIED alternate (yes|no) "no"
疑似属性の意味論は、HTML 4.0 における <LINK REL="stylesheet">
と全く同じであるが、alternate
疑似属性は例外である。alternate="yes"
が規定されていれば、その処理命令は <LINK REL="stylesheet">
の代わりに <LINK REL="alternate stylesheet">
の意味論を持つ。
HTTP [RFC2068], section 19.6.2.4 は、Link
ヘッダを用いてXML文書にスタイルシートを結びつけることを認めている。HTTPの Link
ヘッダによって規定されるリンクはどれも、xml-stylesheet
処理命令によって規定されたリンクの前に出現するものとみなされる。これは、HTML 4.0 におけるのと同じである(section 14.6 を見ること)。
こちらは、対応する処理命令つきの、HTML 4.0 からの例である。
<LINK href="mystyle.css" rel="stylesheet" type="text/css"> <?xml-stylesheet href="mystyle.css" type="text/css"?> <LINK href="mystyle.css" title="Compact" rel="stylesheet" type="text/css"> <?xml-stylesheet href="mystyle.css" title="Compact" type="text/css"?> <LINK href="mystyle.css" title="Medium" rel="alternate stylesheet" type="text/css"> <?xml-stylesheet alternate="yes" href="mystyle.css" title="Medium" type="text/css"?>
複数の xml-stylesheet
処理命令も、LINK REL="stylesheet"
でと全く同じ意味論で許される。たとえば、
<LINK rel="alternate stylesheet" title="compact" href="small-base.css" type="text/css"> <LINK rel="alternate stylesheet" title="compact" href="small-extras.css" type="text/css"> <LINK rel="alternate stylesheet" title="big print" href="bigprint.css" type="text/css"> <LINK rel="stylesheet" href="common.css" type="text/css">
は、次のものと等価となろう。
<?xml-stylesheet alternate="yes" title="compact" href="small-base.css" type="text/css"?> <?xml-stylesheet alternate="yes" title="compact" href="small-extras.css" type="text/css"?> <?xml-stylesheet alternate="yes" title="big print" href="bigprint.css" type="text/css"?> <?xml-stylesheet href="common.css" type="text/css"?>
処理命令を利用すると、主たる文書構造をアプリケーション特有の処理情報で汚染することが避けられる。これは、処理命令のねらいである。
主要なブラウザベンダーからの次のリリースに間に合うように完結できるスタイルシートリンクのための仕様書について緊急の必要性があった。実証済みの既存の機構に密接に基づいた単純な機構を選ぶことによってのみ、この要求に沿う時点に間に合うように仕様書を完結することができたのである。
このバーションの仕様書について選ばれた機構は、将来のバージョンについて計画される追加的な機構を制約するものではない。これらが処理命令を使うことや、リンク情報をソース文書の中に組み込むことにも、制約はない。