|
XML BaseW3C推荐標准 2001年6月27日當前版本: 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 mailto: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: 參考資料
1. 介紹(Introduction)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屬性的狀態是無定義的。
2. 術語(Terminology)[定義:在本規范中,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]中的定義。 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。
本例中的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. 該元素的在文檔實体[譯注//“實体”二字是參照2002年10月21日發布的勘誤添加上去的。] (或外部實体)內部的父元素的基准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。
注意:[譯注//下面這段文字的英文原文采用的是2003年1月23日發布的修正版本] 如果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定義的基准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支持的級別。
|
|||||||||||||||