| 译文 | 将样式表与 XML 文档相联系 | |
|---|---|---|
| ( http://www.opendl.com/openxml/w3/TR/xml-stylesheet/xml-stylesheet-gb.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"?>
为了让主要的浏览器厂商的下一个版本能及时发布,对样式表链接规格说明就有了紧急的需求。只有选择一个接近基于经过检验的已有机制上的简单机制,才可能及时地完成符合这一需求的规格说明。
使用处理指令避免了由使用应用程序特定的处理信息而破坏了主要的文档结构。
为这一个版本规格说明所选择的机制不是对为以后版本所设计的其它的机制的限制。我们没有预期这些新机制将会使用处理指令;其实,这些新机制可能不在源文件中包括链接的信息。