更多信息请访问 W3CHINA.ORG讨论区 |
A
website dedicated to promoting the widespread deployment of W3C technologies. A website
designed to propagate information on the future of the Web. A
website ideally suited for discussions and the exchange of relevant information. |
|
译文: |
XML
Base(http://xmlbase.w3china.org) |
原文: |
|
说明: |
l
本文档是根据2001年6月27日发布的XML Base推荐标准和2003年1月23日更新的勘误表进行翻译的。用修订版本代替原文的地方已在译文中注标出。 l
本文档的英文版是唯一的正式版本。 l
虽然译者已为翻译之精确付出努力,不足之处仍难免存在。欢迎来信指正。或直接在开放翻译计划(OTP)网站上对译文进行修改。 l
译注的内容是非正式的,仅代表译者个人观点。 l
著作权声明位于: http://www.w3.org/Consortium/Legal/copyright-documents.html Copyright
© 1998 W3C® (MIT, INRIA,
Keio ), All Rights Reserved. W3C liability,
trademark,
document use
and software
licensing rules apply. |
译者: |
徐涵(Collin Hsu) |
时间: |
首次发布于2003年7月2日/最后更新于2003年7月20日 |
致 谢 特别感谢Jonathan Marsh和Danny Ayers在本文档的翻译过程中给予的支持和帮助! |
当前版本:
http://www.w3.org/TR/2001/REC-xmlbase-20010627/
(available in HTML, XML)
最新版本:
上一版本:
http://www.w3.org/TR/2000/PR-xmlbase-20001220/
编者:
Jonathan
Marsh, Microsoft <jmarsh@microsoft.com>
本文档提出了一种为XML文档中的某些部分[译注//这里的某些部分特指元素、文档实体和外部实体,不是泛指XML文档中的任何部分。]定义基准URIs(base URIs)的机制(类似于HTML BASE)。
本文档已经过
W3C 成员和其他相关方面(interested parties)的审阅,并已被W3C Director[译注//Director是W3C组织的最高行政职位,目前由Tim
Berners-Lee担任。]批准为 W3C推荐标准(W3C Recommendation)。本文档是稳定的(stable)。这意味着本文档可被用作参考资料或其他文档的规范性参考文献(normative
reference)。W3C 制定推荐标准的任务是使之受到关注,并促使其被广泛使用。这将增强Web的功能性(functionality)与互操作性(interoperablity)。
本文档是W3C XML Linking工作组(Working Group)的工作成果。这项工作是W3C
Architecture Domain中的XML Activity[译注//Activity指的是W3C工作的一个领域]的一部分。关于这项工作的背景,请参见XML Activity Statement。
如果发现本文档[译注//指原英文文档]的错误,请发送错误报告至公开邮件列表www-xml-linking-comments@w3.org (该邮件列表的历史记录存放于http://lists.w3.org/Archives/Public/www-xml-linking-comments/)。错误被确认以后,将被存档于已知错误列表http://www.w3.org/2001/06/xmlbase-errata。
本规范的英文版是唯一的规范性版本(normative
version)。如果需要其他语言的版本,请访问http://www.w3.org/2001/06/xmlbase-translations。
W3C推荐标准及其他技术文档(technical document)的最新列表可从以下网址获得:http://www.w3.org/TR。
1. 介绍
2. 术语
3. xml:base属性
3.1 URI引用的编码和转义
4. 相对URI的解析
4.1. 与RFC
2396的关系
4.2. 基准URI信息的粒度
4.3. URI与基准URI的匹配
5. 一致性
附录
A: 参考资料
XML链接语言[XLink]定义了用于描述资源之间的链接(links)的XML构造元素(constructs)。对XLink的要求之一是:它应以一种一般的方式(a
generic way)来支持HTML [HTML 4.01]中的链接构造元素(constructs)。HTML
BASE元素(element)是XLink工作组已经考虑到的这样一个构造元素。通过使用BASE元素,文档作者可以显式地为文档指定一个基准URI(base
URI),以解析指向外部图像、小程序(applets)、表单(form)处理程序以及样式表(style sheets)等资源的相对URIs。
本文档描述了一种为XLink提供基准URI服务的机制。将其作为一个单独的文档,是为了让其他使用了相对URI、但没有基于XLink的XML应用也能够利用它。实现这一机制,只需使用一个名为xml:base的XML属性。
施用XML Base的方法是将其列入新规范(比如XLink和XML Infoset)的规范性参考资料。这样,基于这些新规范的应用或规范便自动支持XML Base。如果一个应用,它基于的规范都没有直接或间接地规范性引用XML Base,则在该应用中,xml:base属性的状态是无定义的。
[定义:在本规范中,must、must not、required、shall、shall not、should、should not、recommended、may以及optional等关键字符合[IETF RFC 2119]中的定义。]
在本规范中,术语base URI(基准URI)和relative URI(相对URI)符合 [IETF RFC 2396]中的定义。
对于除文档实体和外部实体以外的资源[译注//也就是元素],可以通过在XML文档中嵌入xml:base属性为其指定基准URI。该属性的值在经过编码和转义处理(参见3.1节)之后,可被看作是一个URI引用(URI Reference)(关于URI引用的定义,请参见RFC 2396[IETF RFC 2396])。
在XML命名空间[XML Names]中介绍过,支持命名空间的XML处理器(namespace-aware XML processors)将把前缀“xml”绑定到命名空间名(namespace name)http://www.w3.org/XML/1998/namespace上。注意,在不支持命名空间的XML处理器(non-namespace-aware processors)中,仍可以使用xml:base属性。
下面是一个在包含XLink的文档中使用xml:base属性的例子。为了解释xlink:href属性中的相对URI引用,XLink规范性地参考了XML Base。
<?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>Virtual Library</title> </head> <body> <paragraph>See <link xlink:type="simple" xlink:href="new.xml">what's new</link>!</paragraph> <paragraph>Check out the hot picks of the day!</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">Hot Pick #1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">Hot Pick #2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">Hot Pick #3</link> </item> </olist> </body> </doc> |
本例中的URIs被解析为下列完整的URIs:
l "what's new"被解析为URI "http://example.org/today/new.xml"
l "Hot Pick #1"被解析为URI "http://example.org/hotpicks/pick1.xml"
l "Hot Pick #2"被解析为URI "http://example.org/hotpicks/pick2.xml"
l "Hot Pick #3"被解析为URI "http://example.org/hotpicks/pick3.xml"
xml:base属性值的合法字符集和XML一样,都是[Unicode]。但是,有些Unicode字符不允许出现在URI引用(URI Reference)中。因此,处理器必须对这些字符进行编码和转义处理,以得到一个合法的URI引用。
不允许在URI引用中出现的字符包括:所有的非ASCII字符,以及在[IETF RFC 2396]2.4节列出的字符中去掉
“#”、“%”和方括号符号后剩下的符号。必须按照下面的方式对这些非法字符进行转义处理:
1. 将每个非法字符转换为UTF-8格式[IETF RFC 2279](UTF-8用一个或多个字节来表示原来的字符)。
2. 对于每个与非法字符相应的字节[译注//每个非法字符转换为UTF-8格式后,有一个或多个与它相应的字节],按照URI转义操作机制对它进行转义(也就是说,转换为%HH形式,这里HH是字节值的十六进制记法)。
3. 用最终的字符序列来替换原来的字符。
RFC 2396 [IETF RFC
2396]规定了嵌入在文档中的基准URI信息(base URI information)[译注//注意基准URI信息与基准URI的区别。基准URI信息指的是xml:base属性提供的信息,而基准URI是根据RFC
2396中的规则计算得到的URI。基准URI一定是绝对URI,而xml:base属性的值则可能是相对URI也可能是绝对URI。]。确定基准URI的规则概括如下(以优先级高低排序):
1. 基准URI在文档内容中被指定。
2. 基准URI是封装实体(消息,文档)的基准URI。
3. 基准URI是获取当前实体的URI。
4. 基准URI由具体的应用场合定义。
注意:
在上述第二点和第三点中,术语“实体(entity)”特指RFC 2396中所使用的实体;而在本文档的其余部分,术语“实体”均指XML中的实体。
本文档详细说明了将上述第一条规则用于在XML文档中嵌入基准URI信息的细节。
在XML文档中,相对URI的解析总是相对于元素、文档实体或外部实体的。对于更细粒度(比如:属性、字符或实体)上的基准URI信息,则没有规定。对于内部实体(无论是在内部子集中声明还是在外部DTD中声明)和外部实体中的独立文本(即不被任何元素包含的文本),它们的基准URI与相应的实体引用所具有的基准URI是一样的。
文档实体(或外部实体)的基准URI是根据RFC 2396中的规则来确定的,即文档实体(或外部实体)的基准URI就是被用来获得该文档实体(或外部实体)的URI。
某个具体元素的基准URI是:
1. 由该元素的xml:base属性指定的。如果该元素没有xml:base属性的话,则是
2. 该元素的在文档实体[译注//“实体”二字是参照2002年10月21日发布的勘误添加上去的。] (或外部实体)内部的父元素的基准URI。如果不存在这样的父元素的话,则是
3. 包含该元素的文档实体或外部实体的基准URI。
对于XML文档中某个具体的相对URI,根据下面的规则确定它的基准URI:
1. 对于文本内容(text content)中的URI引用,其基准URI是包含该文本的元素的基准URI。
2. 对于xml:base属性中的URI引用,其基准URI是拥有该xml:base属性的元素在文档实体(或外部实体)内部的父元素的基准URI。如果不存在这样的父元素,则其基准URI是包含该元素的文档实体(或外部实体)的基准URI。
3. 对于其他属性中的URI引用(包括缺省的属性值),其基准URI是拥有该属性的元素的基准URI。
4. 对于PI中的URI引用,其基准URI是该PI在文档实体(或外部实体)内部的父元素的基准URI。如果不存在这样的父元素,则其基准URI是包含该PI的文档实体(或外部实体)的基准URI。
注意:[译注//下面这段文字的英文原文采用的是2003年1月23日发布的修正版本]
如果xml:base属性的值没有在XML文档实体中被直接给出,而是通过缺省属性给出的话,则可能会导致一些意外的结果。比如,那些基于无验证的XML处理器(non-validating XML processor)的软件可能不会读取外部实体中的缺省属性声明。通过外部机制(比如XML Schema)实现属性的缺省也可能会导致一些意外的结果;即使应用使用的是一个有验证的处理器(validating processor),在信息集(infoset)的创建之后,增加缺省属性会导致xml:base属性与信息集中的属性[base URI]不一致。由于这些原因,xml:base属性的值应该直接在XML文档实例中给出,或者通过在DTD内部子集中声明的缺省属性来给出。
如果一个应用根据本规范来计算基准URI,则它符合XML Base。
IETF RFC 2119
RFC 2119: Key
words for use in RFCs to Indicate Requirement Levels. Internet Engineering Task Force, 1997. (See http://www.ietf.org/rfc/rfc2119.txt)
IETF RFC 2279
RFC 2279:
UTF-8, a transformation format of ISO 10646. Internet Engineering Task Force, 1998.
(See http://www.ietf.org/rfc/rfc2279.txt)
IETF RFC 2396 [译注//推荐阅读]
RFC 2396:
Uniform Resource Identifiers. Internet Engineering
Task Force, 1995.
(See http://www.ietf.org/rfc/rfc2396.txt)
IETF RFC 2732
RFC 2732:
Format for Literal IPv6 Addresses in URL's. Internet Engineering Task Force, 1999.
(See http://www.ietf.org/rfc/rfc2732.txt)
Unicode
The Unicode
Standard. The Unicode Consortium.
(See http://www.unicode.org/unicode/standard/standard.html)
XML
Tim Bray, Jean Paoli, C.M.
Sperberg-McQueen, and Eve Maler, editors. Extensible
Markup Language (XML) 1.0 (Second Edition). World Wide Web Consortium, 2000.
(See http://www.w3.org/TR/2000/REC-xml-20001006)
XML Names
Tim Bray, Dave Hollander,
and Andrew Layman, editors. Namespaces in XML. Textuality, Hewlett-Packard, and Microsoft. World Wide Web Consortium,
1999.
(See http://www.w3.org/TR/1999/REC-xml-names-19990114/)
HTML 4.01
Dave Raggett, Arnaud Le
Hors, Ian Jacobs, editors. HTML 4.01 Specification. World Wide Web
Consortium, 1999. (See http://www.w3.org/TR/1999/REC-html401-19991224/.)
XLink
Steve DeRose, Eve Maler,
David Orchard, and Ben Trafford, editors. XML Linking Language (XLink).
World Wide Web Consortium, 2000.
(See http://www.w3.org/TR/2001/REC-xlink-20010627/.)
XML Datatypes
Paul V. Biron, Ashok
Malhotra, editors. XML Schema Part 2: Datatypes. World Wide Web
Consortium Working Draft. (See http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/.)
XHTML
Steven Pemberton, et al. XHTML(TM) 1.0: The Extensible HyperText Markup Language. World Wide Web Consortium, 2000. (See http://www.w3.org/TR/2000/REC-xhtml1-20000126/.)
XML Infoset
John Cowan and Richard
Tobin, editors. XML Information Set. World Wide Web Consortium, 1999. (See http://www.w3.org/TR/2001/CR-xml-infoset-20010514/)
XPath
James Clark and Steven
DeRose, editors. XML Path Language World Wide Web Consortium, 1999. (See http://www.w3.org/TR/1999/REC-xpath-19991116.)
XSLT
James Clark, editor. XSL
Transformations. World Wide Web Consortium, 1999.
(See http://www.w3.org/TR/1999/REC-xslt-19991116.)
XML Base定义了一种在XML文档中嵌入基准URI信息的机制。但XML Base没有定义一种识别哪些内容或属性值可能含有URI的机制。只有为这些词汇指派了语义的规范和应用才知道这些信息。
XML Base的目标是:未来的规范和对XML词汇的修订识别出XML文档中的哪些部分可被看作是URI,并对本规范进行规范性引用,以确保相对URI在整个XML文档中被一致地处理。
XML Base对其他标准(到本文档发布之日为止)的影响如下:
l XML 1.0 [XML]用URI引用作为标识外部实体的系统标识符(system identifier)。由于外部实体声明出现在文档元素(document element)的外部(DTD的内部或外部子集中),因此这些外部实体声明中的URIs不在xml:base属性值的作用范围之内。
l XML Infoset[XML Infoset]为各元素信息项(element information items)定义了base URI属性。为了确定这个属性的值,最新版本的Infoset规范支持了XML Base。引用了这个infoset属性的接口、应用和规范将自动支持XML Base。
l XML命名空间(Namespaces in XML)[XML Names]使用了URI引用。在当前的版本中,对那些被用来标识命名空间的URI引用的解析不应相对于xml:base定义的基准URI。XML命名空间规范中没有涉及那些解除引用(dereference)命名空间URI[译注//即试图(比如在浏览器中)访问命名空间URI。关于解除引用(dereference)的解释,请参见W3C工作草案Architecture of the World Wide Web]的高层处理。但可能会规定使用xml:base来获得那些URI所指向的资源。
l XPath [XPath]数据模型没有保留基准URI信息,也没有保留外部实体的边界。因此,尽管这些外部实体能被正确解析,但对于其中的相对URI引用(包括xml:base属性中的相对URI引用),XPath却无法解析。
l XSLT[XSLT]对XPath数据模型(data model)的扩展规定了要被保留的基准URI信息,但是这一信息的定义排斥了对XML Base的支持。未来版本的XSLT也许希望要求支持XML Base。
l XML模式 第二部分:数据类型(XML Schema Part 2: Datatypes)[XML Datatypes]定义了一个uriReference简单数据类型(primitive datatype)。XML数据类型规范也许想要求那些识别这个数据类型并解析这个URI的应用了解XML Base。
l XLink[XLink]规范需要对XML Base的支持。
l XHTML[XHTML]中使用的URI引用超出了XLink所规定的范围。应用可能会根据XML Base定义的基准URI来解析这些URI引用。XHTML规范也许希望描述它们对XML Base支持的级别。