| 譯文 | 將樣式表與 XML 文檔相聯繫 | |
|---|---|---|
| ( http://www.opendl.com/openxml/w3/TR/xml-stylesheet/xml-stylesheet-big5.html ) | ||
| 英文 | Associating Style Sheets with XML documents | |
| (http://www.w3.org/TR/xml-stylesheet) | ||
| 注意 |
| |
| 譯者 |
| |
| 時間 | 初次定稿﹕2003 年 9 月 6 日 (NZT) | 最後修改: 2003 年 9 月 7 日 (UTC) |
Copyright 1999 W3C (MIT, INRIA, Keio ), All Rights Reserved. W3C liability,trademark, document use and software licensing rules apply.
本文檔允許樣式表通過在文檔的序言中包含一個或多個帶 xml-stylesheet 目標的處理指令來和 XML 文檔相聯繫。
本文檔已由萬維網協會(W3C)組織成員和其他感興趣的各方審閱﹐並已被組織理事批准為萬維網協會(W3C)建議。這是一個穩定的文檔﹐可以用作參考材料﹐也可以作為其它文檔的標準參考文獻。W3C 在建議制定過程中的作用是吸引對本規範的注意並促進它的廣泛使用。這能增強 Web 的功能性和互操作性。
本規格說明已知的錯誤列表在 http://www.w3.org/1999/06/REC-xml-stylesheet-19990629/errata。
對本說明的建議可電郵到 <www-xml-stylesheet-comments@w3.org>。 存檔的建議在 http://www.w3.org/Archives/Public/www-xml-stylesheet-comments。
現有 W3C 建議和其他技術文檔的列表在 http://www.w3.org/TR。
工作小組期望在將來的規格說明中定義將樣式表和 XML 相連的附加的機製。
本規格說明使用 XML 的處理指令不應該被當做一種先例。 W3C 沒有預期在任何的將來規格說明裡推薦使用處理指令。在理由一節中解釋了他們為什麼被用于本規格說明。
本文檔是W3C XML 工作組的工作成果。
xml-stylesheet 處理指令樣式表可通過使用目標是 xml-stylesheet 的處理指令和 XML [XML10]文檔相聯繫。該處理指令遵從 HTML 4.0 <LINK
REL="stylesheet">[HTML40]的行為。
除了不是預定義的實體之外實體不能被引用外﹐xml-stylesheet 處理指令以解析開始標籤的同樣方式來解析。
以下文法使用 XML 建議[XML10] 中同樣文法的記號。所用的文法符號不在這裡定義而在 XML 建議中被定義。
| [1] | StyleSheetPI | ::= | '<?xml-stylesheet' (S PseudoAtt)* S? '?>' | |
| [2] | PseudoAtt | ::= | Name S? '=' S? PseudoAttValue | |
| [3] | PseudoAttValue | ::= | ('"' ([^"<&] | CharRef | PredefEntityRef)* '"' | |
| | "'" ([^'<&] | CharRef | PredefEntityRef)* "'") | ||||
| - (Char* '?>' Char*) | ||||
| [4] | PredefEntityRef | ::= | '&' | '<' | '>' | '"' | ''' |
PseudoAttValue、CharRef 或 PredefEntityRef 是以普通 XML 屬性值相同的方式來解釋。偽屬性的實際的值是每個引用由它所引用的字符替代之後的值。XML 處理器不會自動地執行這種替換。
xml-stylesheet 處理指令處理指令只允許出現在 XML 文檔的序言中。XML 的語法限制處理指令在序言中什麼地方出現﹔xml-stylesheet 處理指令允許出現在序言中符合這些限制的任何地方。
注意﹕如果 xml-stylesheet 處理指令出現在外部 DTD 子集中或在參數實體中﹐無效驗 XML 處理器很有可能不能正確地處理(參看[XML10])。
定義以下的偽屬性
href CDATA #REQUIRED type CDATA #REQUIRED title CDATA #IMPLIED media CDATA #IMPLIED charset CDATA #IMPLIED alternate (yes|no) "no"
除了 alternate 偽屬性的外﹐偽屬性的語義完全與 HTML 4.0 <LINK
REL="stylesheet"> 一致。如果指定 alternate="yes"﹐那麼處理指令的語義為 <LINK REL="alternate stylesheet"> 而不是 <LINK
REL="stylesheet">。
注意﹕既然href屬性的值是一個 URI 引用﹐它可能是相對 URI﹐也可能包含片段標識符。值得注意的是 URI 引用可能只包含一個片段標識符。這樣的 URI 引用是一個指向包含xml-stylesheet處理指令文檔的元件的引用(參見[RFC2396])。其結果是xml-stylesheet處理指令允許樣式表像xml-stylesheet處理指令一樣被嵌入同一文檔。
在一些情況下﹐樣式表可能通過在 XML 文檔外部的方式與該文檔鏈接在一起。例如﹐較早版本的 HTTP [RFC2068](第 19.6.2.4 節)的允許樣式表用 Link 頭與 XML 文檔相聯繫。任何指向在文檔外部說明的樣式表的鏈接都被當成出現在由 xml-stylesheet 處理指令指定的鏈接之前。這與 HTML 4.0(參看第 14.6 節 ) 相同。
下面是來自 HTML 4.0 有對應的處理指令的一些例子﹕
<LINK href="mystyle.css" rel="style sheet" 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"?>
使用與 LINK REL="stylesheet" 完全地相同的語義﹐則允許多個 xml-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"?>
為了讓主要的瀏覽器廠商的下一個版本能及時發佈﹐對樣式表鏈接規格說明就有了緊急的需求。只有選擇一個接近基於經過檢驗的已有機製上的簡單機製﹐才可能及時地完成符合這一需求的規格說明。
使用處理指令避免了由使用應用程序特定的處理信息而破壞了主要的文檔結構。
為這一個版本規格說明所選擇的機製不是對為以後版本所設計的其它的機製的限制。我們沒有預期這些新機製將會使用處理指令﹔其實﹐這些新機製可能不在源文件中包括鏈接的信息。