W3CHINA.ORG首页/文档翻译/XML Base

更多信息请访问 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

原文

XML Basehttp://www.w3.org/TR/2001/REC-xmlbase-20010627/

说明:

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

时间:

首次发布于200372/最后更新于2003720

 

致 谢

特别感谢Jonathan MarshDanny Ayers在本文档的翻译过程中给予的支持和帮助!

 

 

W3C

XML Base

W3C推荐标准    2001627

当前版本:

http://www.w3.org/TR/2001/REC-xmlbase-20010627/ (available in HTML, XML)

最新版本:

http://www.w3.org/TR/xmlbase/

上一版本:

http://www.w3.org/TR/2000/PR-xmlbase-20001220/

编者:

         Jonathan Marsh, Microsoft <jmarsh@microsoft.com>

 


摘要

本文档提出了一种为XML文档中的某些部分[译注//这里的某些部分特指元素、文档实体和外部实体,不是泛指XML文档中的任何部分。]定义基准URIsbase 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: 参考资料

B: 参考资料(非规范性的)

C: 对其他标准的影响(非规范性的)

 


1.        介绍(Introduction

XML链接语言[XLink]定义了用于描述资源之间的链接linksXML构造元素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属性的状态是无定义的。

 

2.        术语Terminology

[定义:在本规范中,must、must not、required、shall、shall not、should、should not、recommended、may以及optional等关键字符合[IETF RFC 2119]中的定义。]

 

在本规范中术语base URI基准URIrelative URI相对URI符合 [IETF RFC 2396]中的定义。

 

3.        xml:base属性xml:base Attribute   

对于除文档实体和外部实体以外的资源[译注//也就是元素]可以通过在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"

 

3.1.                    URI引用的编码和转义(URI Reference Encoding and Escaping

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.         用最终的字符序列来替换原来的字符。

 

4.        相对URI的解析(Resolving Relative URIs

4.1.         RFC 2396的关系(Relation to RFC 2396

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信息的细节。

 

4.2.         基准URI信息的粒度(Granularity of base URI information

XML文档中,相对URI的解析总是相对于元素、文档实体或外部实体的。对于更细粒度(比如:属性、字符或实体)上的基准URI信息,则没有规定。对于内部实体(无论是在内部子集中声明还是在外部DTD中声明)和外部实体中的独立文本(即不被任何元素包含的文本),它们的基准URI与相应的实体引用所具有的基准URI是一样的。

 

文档实体(或外部实体)的基准URI是根据RFC 2396中的规则来确定的,即文档实体(或外部实体)的基准URI就是被用来获得该文档实体(或外部实体)URI。

 

某个具体元素的基准URI是:

 

1.        由该元素的xml:base属性指定的。如果该元素没有xml:base属性的话则是

2.        该元素的在文档实体[译注//“实体二字是参照20021021日发布的勘误添加上去的。] (或外部实体)内部的父元素的基准URI。如果不存在这样的父元素的话,则是

3.        包含该元素的文档实体或外部实体的基准URI

 

4.3.         URI与基准URI的匹配(Matching URIs with base URIs

对于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

 

注意:[译注//下面这段文字的英文原文采用的是2003123日发布的修正版本]

如果xml:base属性的值没有在XML文档实体中被直接给出,而是通过缺省属性给出的话,则可能会导致一些意外的结果。比如,那些基于无验证的XML处理器(non-validating XML processor)的软件可能不会读取外部实体中的缺省属性声明。通过外部机制(比如XML Schema)实现属性的缺省也可能会导致一些意外的结果;即使应用使用的是一个有验证的处理器(validating processor),在信息集(infoset)的创建之后,增加缺省属性会导致xml:base属性与信息集中的属性[base URI]不一致。由于这些原因,xml:base属性的值应该直接在XML文档实例中给出,或者通过在DTD内部子集中声明的缺省属性来给出。

 

5.        一致性(Conformance

如果一个应用根据本规范来计算基准URI,则它符合XML Base

A.       参考资料

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/)

B.       参考资料(非规范性的)

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.)

C.      对其他标准的影响(非规范性的)

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定义的基准URIXML命名空间规范中没有涉及那些解除引用(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支持的级别。