天天看點

W3C推薦标準 XML資訊集 - 了解 HTML 的組成XML資訊集W3C推薦标準   2001年10月24日摘要本文檔的狀态目錄附錄 A:  參考資料(References)附錄 B:  XML 1.0通報需求(XML 1.0 Reporting Requirements)(參考性的)附錄 C:  示例(Example)(參考性的)附錄 D:  XML資訊集不包含的資訊(What is not in the Information Set)附錄 E:  RDF Schema(參考性的)

W3CHINA.ORG首頁/文檔翻譯/XML資訊集 更多資訊請通路 W3CHINA.ORG讨論區
W3C推薦标準 XML資訊集 - 了解 HTML 的組成XML資訊集W3C推薦标準   2001年10月24日摘要本文檔的狀态目錄附錄 A:  參考資料(References)附錄 B:  XML 1.0通報需求(XML 1.0 Reporting Requirements)(參考性的)附錄 C:  示例(Example)(參考性的)附錄 D:  XML資訊集不包含的資訊(What is not in the Information Set)附錄 E:  RDF Schema(參考性的)

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資訊集Unicode中文版(http://infoset.w3china.org/)
原文: XML Infomation Set(http://www.w3.org/TR/2001/REC-xml-infoset-20011024)
說明:

l          本文檔是根據2001年10月24日釋出的XML Information Set推薦标準進行翻譯的。

l          本文檔的英文版是唯一的正式版本。

l          譯者力求準确地翻譯原文,但難免不足。歡迎來信指正。

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) 
W3C推薦标準 XML資訊集 - 了解 HTML 的組成XML資訊集W3C推薦标準   2001年10月24日摘要本文檔的狀态目錄附錄 A:  參考資料(References)附錄 B:  XML 1.0通報需求(XML 1.0 Reporting Requirements)(參考性的)附錄 C:  示例(Example)(參考性的)附錄 D:  XML資訊集不包含的資訊(What is not in the Information Set)附錄 E:  RDF Schema(參考性的)
時間: 首次釋出于2003年8月10日/最後更新于2003年8月10日

緻  謝

感謝所有在文檔翻譯過程中給予技術指點和解答的專家,他們是:

John Cowan , Richard Tobin(University of Edinburgh), Tim Bray 。

XML資訊集

W3C推薦标準   2001年10月24日

目前版本:

http://www.w3.org/TR/2001/REC-xml-infoset-20011024

最新版本:

http://www.w3.org/TR/xml-infoset

上一版本:

http://www.w3.org/TR/2001/PR-xml-infoset-20010810

編者:

John Cowan, [email protected]

Richard Tobin, [email protected]

摘要

本規範為那些需要引用XML文檔中的資訊的規範提供了一組定義。

本文檔的狀态

這一部分描述了本文檔在釋出時的狀态。本文檔可能會被其他文檔所取代。本文檔系列的最新狀态由W3C維護。

本文檔是W3C的推薦标準(Recommendation)。

本文檔已經過 W3C 成員和其他相關方面(interested parties)的審閱,并已被W3C Director準許為 W3C推薦标準(W3C Recommendation)。本文檔是穩定的(stable)。這意味着本文檔可被用作參考資料或其他文檔的規範性參考文獻(normative reference)。W3C 制定推薦标準的任務是使之受到關注,并促使其被廣泛使用。這将增強Web的功能性(functionality)與互操作性(interoperablity)。

本文檔是W3C XML Core Working Group的工作成果。這項工作是W3C Architecture Domain中的XML Activity[譯注//Activity指的是W3C工作的一個領域。]的一部分。關于這項工作的背景,請參見XML Activity Statement。

XML資訊集涉及到已公開的專利;根據W3C的政策,這些專利可在XML Infoset Patent Statement頁面中找到。

如果發現本文檔[譯注//指英文原始文檔]的錯誤,請發送錯誤報告至[email protected](公開檔案)。

本規範的已知錯誤清單位于:http://www.w3.org/2001/10/02/xml-infoset-errata.html。

本規範的英文版是唯一的規範性版本(normative version)。如果需要其他語言的版本,請通路http://www.w3.org/XML/#trans。

目錄

1.  介紹

2.  資訊項

2.1.   文檔資訊項

2.2.   元素資訊項

2.3.   屬性資訊項

2.4.   PI資訊項

2.5.   未展開實體引用資訊項

2.6.   字元資訊項

2.7.   注釋資訊項

2.8.   文檔類型聲明資訊項

2.9.   非解析實體資訊項

2.10.  格式資訊項

2.11.  命名空間資訊項

3.  一緻性

附錄 A:  參考資料

附錄 B:  XML 1.0 通報需求(參考性的)

附錄 C:  示例(參考性的)

附錄 D:  XML資訊集不包含的資訊

附錄 E:  RDF Schema(參考性的)

1.    介紹(Introduction)

本規範定義了一個稱為XML資訊集(XML Information Set,或簡稱XML Infoset)的抽象資料集合。它的用途是為那些需要引用XML文檔[XML]中的資訊的規範提供一組一緻的定義[譯注//SOAP 1.2、OWL等文檔都用到了XML資訊集]。

本規範并不試圖做到毫無遺漏;一個資訊項(information item)或一個屬性(property)是否被包括在内,主要取決于它在未來規範中的用處。本規範并沒有規定XML處理器(XML processor)必須傳回的資訊。

如果一個XML文檔是良構的(well-formed),并且滿足命名空間方面的限制條件(将在下面給出),那麼這個XML文檔有一個相應的資訊集(information set)。注意:并非隻有有效的(valid)XML文檔才有資訊集。

資訊集的建立可以通過解析XML文檔的方式來進行,也可以通過調用方法的方式來進行(本規範沒有描述這種方法)。參見

下面要介紹的合成的資訊集。

一個XML文檔的資訊集由若幹資訊項(information item)組成,在這些資訊項中必然包含一個文檔資訊項和幾個其他的資訊項。資訊項是XML文檔中某個部分的抽象描述,每個資訊項都有一組相應的屬性(property)。在本規範中,這些屬性的名稱将用方括号括起來(比如:[屬性名])。資訊項的類型将在第二部分給出。

XML資訊集沒有規定或傾向于使用某個或某一類接口。本規範使用被修飾的樹(modified tree)來描述XML資訊集是出于簡單和明了的考慮,并不表示一定要用樹結構來構造XML資訊集。其他類型的接口,比如(但不局限于)基于事件的(event-based)或基于查詢的(query-based)接口都可以遵照本規範來提供XML文檔中的資訊。

對于“資訊集(information set)”和“資訊項(information item)”這兩個術語,它們的含義類似于通常所說的“樹(tree)”和“結點(node)”。盡管如此,本規範中仍将使用前面兩個術語,以避免與其他一些資料模型(data model)混淆。注意:資訊項與DOM中的結點(node)或XPath資料模型中的樹(tree)和結點(node)沒有一一對應的關系。

在本規範中,“must”、“should”和“may”等詞的含義符合[RFC2119]中的規定,隻是沒有用大寫字母來書寫這些單詞。[譯注//RFC2119要求使用大寫字母來書寫這些詞,以使這些詞差別于普通的語氣詞。]

命名空間(Namespaces)

隻要一個XML 1.0文檔不符合[Namespaces],它就被視為沒有任何有意義的資訊集,即使它是一個良構的(well-formed)文檔。也就是說,如果在某個XML文檔的元素名或屬性名中,冒号的使用不符合[Namespaces]中的規定,則本規範不為該XML文檔定義資訊集。

此外,對于那些在命名空間聲明(namaspace declarations)中使用了相對URI引用(relative URI reference)[譯注//URI引用(定義參見RFC 2396)與URI有着重要的差別:URI總能辨別一個資源,而URI引用則不一定。因為URI引用有相對(通常所說的相對URI實際上指的是相對URI引用)與絕對之分,必須将相對URI引用解析為絕對URI引用才能辨別資源。此外,在RFC 2396中,片段辨別符(fragment identifier)被視為是URI引用的一部分,而不是URI的一部分。但在未來的RFC中,片段辨別符可能會被視為是URI的一部分。]的XML文檔,本規範也不為它們定義資訊集。這與W3C XML Plenary Interest Group在[Relative Namespace URI References]中的決議是一緻的。

[namespace name]屬性的值是規格化後的值;處理器不對它進行任何其它的URI轉義操作。

實體(Entites)

一個XML資訊集用已展開的實體引用來描述它所對應的XML文檔。也就是說,通過替換文本(replacement text)所對應的資訊項來表示。但是在許多情況下,XML處理器可能不對實體引用進行展開。一個實體可以不被聲明,也可以是不可擷取的。無驗證的XML處理器(non-validating processor)可以不必讀取每一個的聲明,這樣,就可以不必展開所有的外部實體。在這些情況下,用未展開實體引用資訊項來表示實體引用。

行尾處理(End-of-Line Handling)

資訊集中所有屬性的值都要根據[XML] 中的2.11“End-of-Line Handling”進行行尾的規格化處理。

基準URIs(Base URIs)

有些資訊項有[base URI]或[declaration base URI]屬性。這些屬性的值是根據[XML Base][譯注//XML Base的Unicode簡體中文版位于:http://xmlbase.w3china.org/]計算得到的。注意:在擷取資源的過程中可能會在解析級(或解析級的下級)發生重定向(比如,在一個實體解析器中)。在這種情況下,基準URI是經過所有重定向之後被最終用來擷取資源的那個URI。

這些屬性的值不反映為擷取資源而可能需要的URI轉義操作,但是在下面兩種情況下這些屬性可能會包含轉義處理後的字元:(1)這些字元是在文檔中指定的;(2)這些字元是伺服器在重定向時傳回的。

在某些情況下(比如從字元串或管道中讀出的文檔),[XML Base]中的規則可能會産生一個依賴于應用程式的基準URI。此時,[base URI]屬性和[declaration base URI]屬性的值在本規範中沒有定義。

在解析相對URI時,[base URI]屬性(property)應優先于xml:base屬性(attribute)被使用。因為在合成的資訊集(Synthetic Infosets)中,它們可能會不一緻。

“未知”與“沒有值”(“Unknow”與“No Value”)

有些屬性有時可以取值no value或unknown[譯注//注意:這裡的no value和unknown僅表示抽象的含義,并不表示實際的屬性值就是字元串“no value”或“unknown”。在實際應用中如何展現這兩個特殊的值與具體的資訊集接口(interface)有關,不同的資訊集接口可能會采取不同的方式來展現這兩個值]。它們分别表示該屬性的值未知或該屬性沒有值。這兩個值是互相差別的,它們與其它值也有所不同。要特别注意的是:這兩個值與空字元串(empty string)、空集(empty set)以及空清單(empty list)是不同的(後三者僅表示沒有成員)。本規範沒有使用null做為屬性值是因為:在某些領域,它(null)有着特殊的含義,而這些含義不符合這裡的需要。

合成的資訊集(Synthetic Infosets)

本規範描述了通過解析XML文檔的方式得到的XML資訊集。XML資訊集也可以通過其他方式來構造(比如使用像DOM這樣的API,或對已有的資訊集進行修改)。

對應于一個真實XML文檔的資訊集必然在多處保持一緻。比如,某個元素的[in-scope namespace]屬性必然與該元素以及該元素的祖先的[namespace attributes]屬性一緻。但對于使用其它方法構造出的資訊集,這一點未必成立。在這種情況下,該資訊集沒有相應的XML文檔。是以,若要将其序列化(serialize),就必須解決這些不一緻(比如輸出所有在元素範圍内有效的命名空間的聲明)。

2.    資訊項(Information Items)

一個資訊集可以包含最多11種不同類型的資訊項(下面将進行介紹)。每個資訊項都有若幹屬性(properties)。為了引用友善,每個屬性都被給予一個名稱。在本規範中,屬性名将用方括号括起來,比如[屬性名]。下面在介紹各資訊項時,将給出它們的對應部分在XML 1.0推薦标準[XML]中的定義和/或文法的連結。

2.1.              文檔資訊項(The Document Information Item)

XML定義: document (Section 2, Documents)

XML文法: [1] Document (Section 2.1, Well-Formed XML Documents)

每個資訊集有且僅有一個文檔資訊項(document information item)。資訊集中的所有其他資訊項都可以從文檔資訊項的屬性以及屬性的屬性等等來獲得。

文檔資訊項包含以下屬性:

1.       [children] 一個子資訊項(child information items)的有序清單(以它們在文檔中的出現次序為序)。本有序清單含有一個元素資訊項(elementinformation item)。所有位于文檔元素(document element)外部的處理指令(processing instruction,簡稱PI)在本有序清單中都有一個相應的PI資訊項(processing instruction information item)。所有位于文檔元素外部的注釋(comment)在本有序清單中都有一個相應注釋資訊項(commentinformation item)。而位于DTD中的PI和注釋在本有序清單中則沒有相應的資訊項。如果XML文檔有文檔類型聲明(document type declaration),則本有序清單中有一個文檔類型聲明資訊項(document type declaration information item)。

2.      [document element] 對應于文檔元素的元素資訊項。

3.      [notations] 一個格式資訊項(notation information items)的無序集。所有在DTD中聲明的格式(notation)在本無序集中都有一個相應的格式資訊項。

4.      [unparsed entities] 一個非解析實體資訊項(unparsed entity information items)的無序集。所有在DTD中聲明的非解析實體在本無序集中都有一個非解析實體資訊項。

5.      [base URI] 文檔實體的基準URI。

6.      [character encoding scheme] 文檔實體(document entity)采用的字元編碼方案的名稱。

7.      [standalone] 本屬性表明XML文檔是否是一個獨立文檔(standalone document)。它的值是根據XML聲明(位于文檔實體的首部)中的獨立文檔聲明(在XML聲明中是可選的)來設定的。如果沒有獨立文檔聲明,則該屬性沒有值(no value)。

8.      [version] 一個字元串,表明文檔遵從的XML版本号。本屬性的值是根據XML聲明(位于文檔實體的首部,可選的)中的版本資訊來設定的。如果沒有XML聲明,則本屬性沒有值(no value)。

9.      [all declarations processed] 嚴格地說,本屬性不屬于文檔資訊集的一部分,它僅表明XML處理器是否已經讀過了整個DTD。本屬性的值是一個布爾量,它可能會影響資訊集中的某些其他屬性(在介紹這些屬性時将給予說明)的取值:如果本屬性的值為false,則它們的值為未知(unknown);如果本屬性的值為true,則它們的值一定是未知(unknown)以外的值。

2.2.              元素資訊項(Element Information Items)

XML定義:element (Section 3, Logical Structures)

XML文法:[39] Element (Section 3, Logical Structures)

對于出現在XML文檔中的每個元素(element),在資訊集中都有一個相應的元素資訊項(element information item)。在所有的元素資訊項中,必有一個是文檔資訊項的[document element]屬性的值。這個元素資訊項對應于元素樹結構的根。以該元素資訊項為起點,遞歸地通路[children]屬性,便可獲得所有其餘的元素資訊項。

元素資訊項包含下列屬性:

1.        [namespace name] 元素類型[譯注//這裡的元素指的是在XML文檔中與本資訊項對應的那個元素,下同。]的命名空間名(namespace name)(如果有的話)。如果元素不屬于任何命名空間,則本屬性沒有值(no value)。

2.        [local name] 元素類型名(element-type name)的内部名(local part)。本屬性不包括命名空間字首(namespace prefix)和冒号。

3.        [prefix] 元素類型名的命名空間字首(namespace prefix)。如果元素類型名沒有字首,則本屬性沒有值(no value)。注意:支援命名空間的應用程式應使用命名空間名(namespace name)而不是命名空間字首(namespace prefix)來辨別元素[譯注//命名空間名唯一地辨別一個命名空間,而命名空間字首則不一定。因為不同的命名空間字首可能對應着同一個命名空間名。]。

4.        [children] 一個子資訊項的有序清單。本有序清單包含元素資訊項、PI資訊項、未展開實體引用資訊項、字元資訊項以及注釋資訊項。對于出現在目前元素中的每個元素、處理指令(PI)、對未展開外部實體的引用、資料字元和注釋,在本有序清單中都有一個相應類型的資訊項。對于空元素(empty element),本有序清單為空。

5.        [attributes] 一個屬性資訊項的無序集。對于元素的每個屬性(無論是被顯式指定屬性值,還是根據DTD得到預設屬性值),在本無序集中都有一個相應的屬性資訊項。但元素的命名空間聲明(namespace declaration)不被包含在本無序集中[譯注//命名空間聲明被包含在namespace attributes屬性中]。如果元素沒有屬性,則本無序集為空集。

6.        [namespace attributes] 一個屬性資訊項的無序集。對于元素的每個命名空間聲明(無論是被顯式指定屬性值,還是根據DTD得到預設屬性值),在該無序集中都有一個相應的屬性資訊項。對于取消預設命名空間的聲明(即xmlns=””)也被認為是一個命名空間聲明。根據定義,所有的命名空間屬性(包括被指定值的xmlns,它的[prefix]屬性沒有值)都有一個命名空間URI:http://www.w3.org/2000/xmlns/。如果元素沒有命名空間聲明,則該無序集為空集。

7.        [in-scope namespaces] 一個命名空間資訊項的無序集。對于在元素範圍内有效的每個命名空間,在本無序集中都有一個相應的命名空間資訊項。本無序集總含有一個[prefix]屬性值為“xml”的命名空間資訊項。命名空間字首xml被隐式地綁定到命名空間名http://www.w3.org/XML/1998/namespace上。本無序集不包含[prefix]屬性值為“xmlns”(它被用于命名空間的聲明)的命名空間資訊項,因為應用程式決不會遇到命名空間字首為“xmlns”的元素或屬性。本無序集包含[namespace attributes]屬性中的所有命名空間資訊項(除了代表xmlns=””的那個命名空間資訊項)。 因為就xmlns=””而言,它并沒有聲明命名空間。相反,它的作用隻是取消(或使無效)預設命名空間。在解析被限定名稱(qualified name)的命名空間字首時,本屬性應優先于[namespace attributes]屬性被使用。因為如果是合成的資訊集(Synthetic Infoset),這兩個屬性可能會不一緻。

8.        [base URI] 元素的基準URI。

9.        [parent] 本屬性的值為一個文檔資訊項或元素資訊項,它的[children]屬性包含本資訊項。

2.3.              屬性資訊項(Attrubute Information Items)

XML定義:attribute (Section 3.1, Start-Tags, End-Tags, and Empty-Element Tags)

XML文法: [41] Attribute (Section 3.1, Start-Tags, End-Tags, and Empty-Element Tags)

對于元素的每個屬性(無論是被顯式指定屬性值,還是根據DTD得到預設屬性值),包括命名空間聲明,都有一個相應的屬性資訊項(attribute information item)。一般屬性對應的屬性資訊項出現在元素資訊項的[attribute]屬性中;而命名空間聲明對應的屬性資訊項出現在元素的[namespace attributes]屬性中。

既沒有預設值又沒有在使用時被顯式指定屬性值的屬性沒有相應的屬性資訊項。

屬性資訊項包含以下屬性(property)[譯注//注意區分attribute與property]:

1.        [namespace name] 屬性(attribute)[譯注//即與本資訊項對應的屬性,下同。]的命名空間名(如果有的話)。對于不屬于任何命名空間的屬性(attribute),本屬性(property)沒有值(no value)。

2.        [local name] 屬性名的内部名(local part)。本屬性(property)不含命名空間字首和冒号。

3.        [prefix] 屬性名(attribute name)的命名空間字首。對于不包含命名空間字首的屬性名(attribute name),本屬性(property)沒有值(no value)。注意:支援命名空間的應用程式應使用命名空間名而不是命名空間字首來辨別屬性。

4.        [normalized value] 規格化後的屬性值(attribute value)(參見3.3.3 Attribute-Value Normalization [XML])。

5.        [specified] 本屬性(property)為一個标記(flag),它表示屬性值(attribute value)是在元素的首标簽中被顯式指定的,還是取自DTD中的預設值。

6.        [attribute type] 屬性(attribute)的類型。本屬性(property)的合法值包括:ID、IDREF、IDREFS、ENTITY、ENTITIES、NMTOKEN、NMTOKENS、NOTATION、CDATA和ENUMERATION。對于沒有聲明的元素,該屬性沒有值(no value)。如果尚未讀到聲明,并且文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。應用程式應将沒有值(no value)和未知(unknown)作為CDATA值來對待。

7.        [references] 如果[attribute type]屬性的值為ID、NMTOKEN、NMTOKENS、CDATA或ENUMERATION,則本屬性沒有值(no value)。如果[attribute type]屬性的值為未知(unknown),則本屬性的值也為未知(unknown)。否則(也就是說,如果屬性類型為IDREF、IDREFS、ENTITY、ENTITIES或NOTATION),則本屬性的值是一個有序清單。該有序清單包含屬性值(attribute value)引用到的元素資訊項、非解析實體資訊項或格式資訊項(以它們的出現次序為序)。如果屬性值(attribute value)的文法無效,則本屬性(property)沒有值(no value)。在下面兩種情況下本屬性(property)沒有值(no value)或屬性值(property)為未知(unknown)(具體取哪一個值要看文檔資訊項的[all declarations processed]屬性是true還是false):[attribute type]屬性的值為IDREF或IDREFS,并且某個被引用的ID沒有在ID屬性(ID attribute)值中(在目前文檔範圍内)出現過;[attribute type]屬性的值為ENTITY,ENTITIES或NOTATION,并且沒有讀到這些實體或格式(notation)的聲明。如果[attribute type]屬性的值是IDREF或IDREFS,并且某個被引用的ID在多個ID屬性值(在目前文檔範圍内)中出現,則本屬性沒有值(no value)。

8.        [owner element] 本屬性的值為一個元素資訊項,它的[attribute]屬性包含本資訊項。

2.4.              PI資訊項(Processing Instruction Information Items)

XML定義: processing instruction (Section 2.6, Processing Instructions)

XML文法: [16] PI (Section 2.6, Processing Instructions)

文檔中的每個處理指令(processing instruction,簡稱PI)都有一個相應的PI資訊項(processing instruction inforamiton item)。注意:XML聲明(XML declaration)和文本聲明(text declaration)(用于外部已解析實體)不屬于處理指令(PI)範疇。

PI資訊項包含以下屬性:

1.      [target] 本屬性的值為一個字元串,表示PI的目标(PI Target)。

2.      [content] 本屬性的值為一個字元串,表示PI的内容(不包含PI目标和PI目标後的空白)。如果PI沒有内容,則本屬性的值為一個空字元串(empty string)。

3.      [base URI] PI的基準URI。注意:在将一個資訊集序列化為一個XML文檔時,原來位于最高層外部實體中的那些PI的基準URI無法得到保留,因為沒有這樣的文法。

4.      [notation] 本屬性的值為一個格式資訊項(notation information item),它的[name]屬性值與本資訊項的[target]屬性值相同。如果不存在這樣的格式資訊項,則本屬性沒有值(no value)。如果尚未讀到聲明,并且文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。

5.      [parent] 本屬性的值為一個文檔資訊項、元素資訊項或文檔類型聲明資訊項,它的[children]屬性包含本資訊項。

2.5.              未展開實體引用資訊項(Unexpanded Entity Reference Information Items)

XML定義: Section 4.4.3, Included If Validating

XML處理器通過設定一個未展開實體引用資訊項(unexpanded entity reference information item)來表明處理器還沒有展開某個外部已解析實體(external parsed entity)。對于在元素内容中出現的每個尚未展開的對外部一般實體的引用,有一個相應的未展開實體引用資訊項。對于要讀取所有外部一般實體的XML處理器(無論是有驗證的還是無驗證的),它不為有效的文檔(valid document)建立本資訊項。

未展開實體引用資訊項包含以下屬性:

1.      [name] 被引用實體的名稱。

2.      [system identifier] 實體的系統辨別符(system identifier)。這裡的系統辨別符和在實體聲明中給出的系統辨別符是一樣的,XML處理器未對它進行URI轉義處理。如果沒有關于該實體的聲明,則本屬性沒有值(no value)。如果尚未讀到聲明,并且文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。

3.      [public identifier] 規格化(根據4.2.2 External Entities [XML]中的規則[譯注//即用單個空格字元(#x20)替換所有的空白串,再去掉所有前導空白和拖尾空白])後的實體的公共辨別符(public identifier)。如果沒有關于該實體的聲明,或者有實體聲明、但實體聲明中沒有公共辨別符,則本屬性沒有值(no value)。如果尚未讀到聲明,并且文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。

4.      [declaration base URI] 在解析系統辨別符(system identifier)時應參照的基準URI(也就是包含該實體的聲明的資源的基準URI)。如果[system identifier]屬性沒有值(no value)或屬性值為未知(unknown),則本屬性也沒有值(no value)或屬性值為未知(unknown)。

5.       [parent] 本屬性的值為一個元素資訊項,它的[children]屬性包含本資訊項。

2.6.              字元資訊項(Character Information Items)

XML文法: [2] Char (Section 2.2, Characters)

文檔中出現的每個資料字元(data character)(無論是字元引用還是CDATA段中的字元)都有一個相應的字元資訊項(character information item)。

每個字元在邏輯上都是分開的資訊項,但XML應用程式可以根據需要自由地将字元組織成更大的塊。

字元資訊項包含以下屬性:

1.      [character code] 字元對應的ISO 10646字元代碼(範圍從0到#x10FFFF,盡管這個範圍内的值并不都是合法的XML字元代碼)。

2.      [element content whitespace] 本屬性的值為一個布爾量,它表明一個字元是否是元素内容(參見[XML],2.10 "White Space Handling")中的空白(white space)。注意:XML 1.0要求有驗證的XML處理器(validating XML processor)必須提供這個資訊。在字元為空白的情況下,如果沒有字元所在元素的聲明,則本屬性沒有值(no value);如果尚未讀到聲明,而且文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。在字元不是空白的情況下,本屬性總為false。

3.       [parent] 本屬性的值為一個元素資訊項,它的[children]屬性包含本資訊項。

2.7.              注釋資訊項(Comment Information Items)

XML定義: comment (Section 2.5, Comments)

XML文法: [15] Comment (Section 2.5, Comments)

原始文檔中的每個(除了DTD中的)XML注釋都有一個相應的注釋資訊項(comemnt information item)。

注釋資訊項包含以下屬性:

1.      [content] 本屬性的值為一個字元串,它表示注釋的内容。

2.       [parent] 本屬性的值為一個文檔資訊項或元素資訊項,它的[children]屬性包含本資訊項。

2.8.              文檔類型聲明資訊項(TheDocument Type Declaration Information Items)

XML定義: document type declaration (section 2.8, Prolog and Document Type Declaration)

XML文法: [28] doctypedecl (section 2.8, Prolog and Document Type Declaration)

如果XML文檔有文檔類型聲明(document type declaration),則資訊集中包含一個文檔類型聲明資訊項(document type declaration information item)。注意:實體和格式(notation)是文檔資訊項的屬性,而不是文檔類型聲明資訊項的屬性。

文檔類型聲明資訊項包含以下屬性:

1.      [system identifier] 外部子集的系統辨別符(system identifier)。這裡的系統辨別符和在DOCTYPE聲明中給出的系統辨別符是一樣的,XML處理器未對它進行URI轉義處理。如果沒有外部子集,則本屬性沒有值(no value)。

2.      [public identifier] 規格化(根據4.2.2 External Entities [XML]中的規則)後的外部實體的公共辨別符(public identifier)。如果沒有外部實體,或者有外部實體但沒有公共辨別符,則本屬性沒有值(no value)。

3.      [children] 一個PI資訊項的有序清單。本有序清單包含所有出現在DTD中的PI(以它們在原始文檔中的出現次序為序)。内部子集中的PI顯示在前面,外部子集中的PI顯示的後面。

4.       [parent] 本屬性的值為文檔資訊項。

2.9.              非解析實體資訊項(Unparsed Entity Information Items)

XML定義: entity (section 4, Physical Structures)

XML文法: [71] GEDecl (section 4.2, Entities)

在DTD中聲明的每個非解析一般實體(unparsed general entity)[譯注//非解析實體隻有一種,即外部非解析一般實體(external unparsed general entity)]都有一個非解析實體資訊項(Unparsed Entity Information Item)。

非解析實體資訊項包含以下屬性:

1.      [name] 實體的名稱。

2.      [system identifier] 實體的系統辨別符。這裡的系統辨別符和在實體聲明中給出的系統辨別符是一樣的,XML處理器未對它進行URI轉義處理。

3.      [public identifier] 規格化(根據4.2.2 External Entities [XML]中的規則)後的實體的公共辨別符。如果實體沒有公共辨別符,則本屬性沒有值(no value)。

4.      [declaration base URI] 在解析系統辨別符時應參照的基準URI(也就是包含該實體的聲明的資源的基準URI)。

5.      [notation name] 實體對應的格式名稱(notation name)。

6.       [notation] 本屬性的值為一個格式資訊項,它的[name]屬性值和本資訊項的[notation name]屬性值相同。如果沒有這樣的格式資訊項,則本屬性沒有值(no value)。如果尚未讀到聲明,但文檔資訊項的[all declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。

2.10.       格式資訊項(Notation Information Items)

XML定義: notation (section 4.7, Notations)

XML文法: [82] NotationDecl (section 4.7, Notations)

在DTD中聲明的每個格式(notation)都有一個格式資訊項(notation information item)。

格式資訊項包含以下屬性:

1.      [name] 格式的名稱。

2.      [system identifier] 格式的系統辨別符(system identifier)。這裡的系統辨別符和在格式聲明中給出的系統辨別符是一樣的,XML處理器未對它進行URI轉義處理。如果沒有給出格式的系統辨別符,則本屬性沒有值(no value)。

3.      [public identifier] 規格化(根據4.2.2 External Entities [XML]中的規則)後的格式的公共辨別符(public identifier)。如果格式沒有公共辨別符,則本屬性沒有值(no value)。

4.      [declaration base URI] 在解析系統辨別符(system identifier)時應參照的基準URI(也就是包含該格式的聲明的資源的基準URI)。

2.11.       命名空間資訊項(Namespace Information Items)

每個元素對應的元素資訊項都有一個[in-scope namespaces]屬性,對于在該元素範圍内有效的每個命名空間在這個屬性中都有一個相應的命名空間資訊項(namespace information item)[譯注//注意:并不是在該元素範圍内有效的每個命名空間都是隻有一個命名空間資訊項。比如,如果在該元素範圍内有兩個不同的命名空間字首綁定到同一個命名空間上,則将有兩個命名空間資訊項,它們分别對應于這兩個綁定。是以,嚴格地說,是該元素範圍内有效的每個命名空間綁定對應一個命名空間資訊項。]。

命名空間資訊項包含以下屬性:

1.      [prefix] 命名空間的字首。從文法上說,本屬性(property)的值為屬性名(attribute name)[譯注//即聲明本命名空間的那個屬性的屬性名]中位于字首“xmlns:”後的部分。如果屬性名為“xmlns”(即聲明預設命名空間),則本屬性沒有值(no value)。

2.      [namespace name] 命名空間字首對應的命名空間名(namespace name)。

3.    一緻性(Conformance)

資訊集的用途在于提供一組定義,是以,一緻性是對那些使用了這些定義的規範[譯注//比如SOAP和OWL等]而言的,而不是對這些規範的實作而言的。

引用了XML資訊集的規範必須:

·         指出哪些資訊項和屬性對于實作該規範是必需的。(這一點間接地對那些實作該規範的處理器施加了一緻性需求)

·         指出如何處理那些非必需的資訊項和屬性(比如,可以将它們原封不動地傳遞至下一處理階段)。

·         記錄所有要求XML文檔提供、而資訊集沒有定義的資訊。

·         記錄那些用法與資訊集的定義不同的術語(這是應當避免的)。

如果某個規範允許建構一個存在不一緻的資訊集(參見合成的資訊集部分),它可以描述如何解決這些不一緻,并且在序列化資訊集時這樣去做。

附錄 A:  參考資料(References)

規範性文獻(Normative References)

ISO/IEC 10646

ISO (International Organization for Standardization). ISO/IEC 10646-1993 (E). Information technology -- Universal Multiple-Octet Coded Character Set (UCS) -- Part 1: Architecture and Basic Multilingual Plane. [Geneva]: International Organization for Standardization, 1993 (plus amendments AM 1 through AM 7).

Namespaces

Namespaces in XML, W3C, eds. Tim Bray, Dave Hollander, Andrew Layman. 14 January 1999. Available at 

http://www.w3.org/TR/REC-xml-names/

.

RFC2119

Key words for use in RFCs to Indicate Requirement Levels, ed. S. Bradner. March 1997. Available at 

http://www.ietf.org/rfc/rfc2119.txt

.

XML

Extensible Markup Language (XML) 1.0 (Second Edition), W3C, eds. Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, Eve Maler. 6 October 2000. Available at

http://www.w3.org/TR/REC-xml

.

XML Base [譯注//XML Base的簡體中文版位于http://xmlbase.w3china.org/]

XML Base, W3C, ed. Jonathan Marsh. February 2000. Available at 

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

.

參考性文獻(Informative References)

DOM

Document Object Model (DOM) Level 1 Specification, W3C, eds. Vidur Apparao, Steve Byrne, Mike Champion, et al. 1 October 1998. Available at

http://www.w3.org/TR/REC-DOM-Level-1/

.

XPointer-Liaison

XPointer-Information Set Liaison Statement, W3C, ed. Steven J. DeRose. 24 February 1999. Available at 

http://www.w3.org/TR/NOTE-xptr-infoset-liaison

.

Relative Namespace URI References

Results of W3C XML Plenary Ballot on relative URI References in namespace declarations, 3-17 July 2000, W3C, eds. Dave Hollander, C. M. Sperberg-McQueen. 6 September 2000. Available at 

http://www.w3.org/2000/09/xppa

.

RDF Schema for the XML Information Set

RDF Schema for the XML Information Set, W3C, ed. Richard Tobin. 6 April 2001. Available at 

http://www.w3.org/TR/xml-infoset-rdfs

.

附錄 B:  XML 1.0通報需求(XML 1.0 Reporting Requirements)(參考性的)

盡管XML 1.0推薦标準[XML]主要關心的是XML的文法,但它也對XML處理器(XML Processor)作了一些具體的通報需求(reporting requirements)。

通報需求包括錯誤(它不屬于本規範的讨論範圍)和文檔資訊。XML 1.0對文檔資訊通報的所有需求都已被綜合到本規範中。括号中的數字表示它們在XML 1.0推薦标準中的所在段落(section)。

1.         XML處理器必須向應用程式提供文檔中所有非标記(markup)部分的字元(2.10)。

2.         有驗證的XML處理器必須向應用程式通封包檔中哪些字元資料是出現在元素内容中的空白(2.10)。

3.         XML處理器必須在将行結束符(line-ends)傳遞給應用程式之前把它們規格化為LF(2.11)。

4.         XML處理器必須在将屬性值傳遞給應用程式之前按照3.3.3節中的規則對它們進行規格化。

5.         XML處理器必須将已聲明的格式的名稱和外部辨別符(系統辨別符、公共辨別符或兩者)傳遞給應用程式(4.7)。

6.         當一個非解析實體的名稱出現在ENTITY或ENTITIES屬性值中(無論是被顯式指定還是獲得預設值),XML處理器必須向應用程式提供這個實體的以及它的格式(notation)的名稱、系統辨別符和公共辨別符(如果有的話)(4.6,4.7)。

7.         XML處理器必須将所有PI傳遞給應用程式(2.6)。

8.         如果一個XML處理器(無驗證的)沒有包含(include)外部已解析實體的替換文本(以替換實體引用),則它必須向應用程式通報它能識别但沒有讀取這個實體(4.4.3)。

9.         有驗證的XML處理器必須包含(include)實體的替換文本(以替換實體引用)(5.2)。

10.    如果某個元素類型的一個屬性有預設值,并且在該元素的首标簽中沒有為這個屬性顯式地指定屬性值,則XML處理器必須為這個屬性提供預設值。

附錄 C:  示例(Example)(參考性的)

看下面的示例XML文檔:

<?xml version="1.0"?>

<msg:message doc:date="19990421"

xmlns:doc=http://doc.example.org/namespaces/doc

xmlns:msg=http://message.example.org/

>Phone home!</msg:message>

這個XML文檔的資訊集包含以下資訊項:

·         一個文檔資訊項。

·         一個元素資訊項。它的[namespace name]屬性為"http://message.example.org/",[local part]屬性為"message",[prefix]屬性為"

msg

"。

·         一個屬性資訊項。它的[namespace name]屬性為"

 http://doc.example.org/namespaces/doc

",[local part]屬性為"

date

",[prefix]屬性為"

doc

"。

·         三個命名空間資訊項。它們分别對應于命名空間

http://www.w3.org/XML/1998/namespace

、http://doc.example.org/namespaces/doc和http://message.example.org/

 namespaces。

·         兩個屬性資訊項。它們分别對應于兩個命名空間屬性。

·         十一個字元資訊項。它們分别對應于字元資料(“Phone home!”)中的十一個字元。

附錄 D:  XML資訊集不包含的資訊(What is not in the Information Set)

目前版本的XML資訊集不包含下列資訊(本清單并不試圖做到毫無遺漏):

1.      在DTD的ELEMENT聲明中定義的元素内容模型(content model)。

2.      ATTLIST聲明中屬性聲明的分組和次序。

3.      文檔類型的名稱。

4.      文檔元素以外的空白(white space)。

5.      緊随PI目标名(target name)後的空白。

6.      字元是否是以字元引用(character reference)的形式出現的。

7.      空元素的兩種形式(即<foo/>與<foo></foo> [譯注//關于foo的典故與含義,請參見RFC 3092])之間的差別。

8.      首标簽(start-tag)和尾标簽(end-tag)之間的空白(屬性值裡的有意義的空白除外)。

9.      行終止符CR、CR-LF和LF之間的差別。

10. 首标簽裡屬性的出現次序。

11. DTD中聲明的出現次序。

12. DTD中條件段(conditional sections)的邊界(boundaries)[譯注//即一個DTD片段是否來自條件段(conditional section)]。

13. DTD中參數實體的邊界。

14. DTD中的注釋(comment)。

15. 聲明的位置(内部實體、外部實體還是參數實體)。

16. 所有被忽略的聲明(包括那些在IGNORE條件段裡的),以及因為先前已有同樣的聲明而被忽略的實體和屬性聲明。

17. 括起屬性值的引号是單引号還是雙引号。

18. 一般已解析實體(general parsed entity)的邊界。

19. CDATA段的邊界。

20. 在DTD中為屬性聲明的預設值。

附錄 E:  RDF Schema(參考性的)

需要XML資訊集的形式化描述,請參見RDF Schema for the XML Information Set。

繼續閱讀