|
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資訊集(第二版)繁體中文版(http://www.w3china.org/translation/infoset2ed.htm) |
|
原文: |
XML Infomation Set(http://www.w3.org/TR/2004/REC-xml-infoset-20040204/) |
|
說明: |
l
本文檔是根據2004年2月4日發佈的XML Information Set ( Second Edition ) Recommendation進行翻譯的。 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. |
|
譯者: |
||
時間: |
首次發佈於2004年9月24日/最後更新於2004年9月24日 |
|
|
||
當前版本:
http://www.w3.org/TR/2004/REC-xml-infoset-20040204
最新版本:
http://www.w3.org/TR/xml-infoset
上一版本:
http://www.w3.org/TR/2003/PER-xml-infoset-20031210
編者:
John Cowan, jcowan@reutershealth.com
Richard Tobin, richard@cogsci.ed.ac.uk
本規範為那些需要引用XML文檔中的資訊的規範提供了一組定義。
這一部分描述了本文檔在發佈時的狀態。本文檔可能會被其他文檔所取代。當前已發佈的W3C文檔列表和最新版本的技術報告可以從位於
http://www.w3.org/TR/ 的W3C技術報告索引獲得。
本文檔是W3C的推薦標準(Recommendation)。它已經過W3C成員和其他相關方面(interested parties)的審閱,並已被W3C總監(Director)批准為W3C推薦標準(W3C
Recommendation)。本文檔是穩定的(stable)。這意味著本文檔可被用作參考資料或其他文檔的規範性文獻(normative reference)。W3C 制定推薦標準的任務是使之受到關注,並促使其被廣泛使用。這將增強Web的功能性(functionality)與互操作性(interoperablity)。
本文檔是對上個資訊集推薦標準的更新,它體現XML 1.1和Namespaces 1.1的內容、澄清了某些種類的無效用法,並糾正了一些排字錯誤。本文檔是W3C XML 行動組(W3C XML
Activity)的工作成果。本文檔的英文版是唯一的規範性版本。本文檔的譯文列表位於 http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-infoset。
本推薦標準可能涉及到的知識產權記錄可在工作組的公共IPR發佈頁面中找到。
如果發現本文檔[譯注//指英文原始文檔]的錯誤,請發送錯誤報告至www-xml-infoset-comments@w3.org(公開檔案)。本文檔的已知錯誤列表位於:http://www.w3.org/2001/10/02/xml-infoset-errata.html。
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通報需求(參考性的)
附錄 C: 示例(參考性的)
附錄 D: XML資訊集不包含的資訊
附錄 E: RDF Schema(參考性的)
本規範定義了一個稱為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要求使用大寫字母來書寫這些詞,以使這些詞區別于普通的語氣詞。]
不同版本的XML規範可能會規定不同的解析規則。一個XML文檔的資訊集被定義為由該文檔所對應的XML版本規定的規則解析得到的資訊集。如果文檔沒有指定XML版本號,則認為它是1.0。如果一個XML處理器收到了一個XML文檔,而該文擋的版本號它不認識,則該處理器將未必能生成正確的資訊集。
只要一個XML文檔不符合[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轉義操作。
資訊集中所有屬性的值都要根據[XML] 中的2.11“End-of-Line Handling”進行行尾的規格化處理。
有些資訊項有[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)中,它們可能會不一致。
有些屬性有時可以取值no value或unknown[譯注//注意:這裏的no value和unknown僅表示抽象的含義,並不表示實際的屬性值就是字串“no value”或“unknown”。在實際應用中如何體現這兩個特殊的值與具體的資訊集介面(interface)有關,不同的資訊集介面可能會採取不同的方式來體現這兩個值]。它們分別表示該屬性的值未知或該屬性沒有值。這兩個值是相互區別的,它們與其他值也有所不同。要特別注意的是:這兩個值與空字串(empty string)、空集(empty set)以及空列表(empty list)是不同的(後三者僅表示沒有成員)。本規範沒有使用null做為屬性值是因為:在某些領域,它(null)有著特殊的含義,而這些含義不符合這裏的需要。
如前面所提到的,一個不是有效的(valid)XML文檔也可以擁有資訊集。但是,某些種類的無效用法會影響指定給某些屬性的值。實體(entities)、格式(notations)、元素(elements)和屬性(attribute)可以是未聲明的。格式和元素可以是被多次聲明的(多次聲明對於實體和屬性是有效的)。一個ID可以是未定義或多次定義的。這些情況將在下面對相關資訊項進行定義時給予說明。
本規範描述了通過解析XML文檔的方式得到的XML資訊集。XML資訊集也可以通過其他方式來構造(比如使用像DOM這樣的API,或對已有的資訊集進行修改)。
對應于一個真實XML文檔的資訊集必然在多處保持一致。比如,某個元素的[in-scope namespace]屬性必然與該元素以及該元素的祖先的[namespace attributes]屬性一致。但對於使用其他方法構造出的資訊集,這一點未必成立。在這種情況下,該資訊集沒有相應的XML文檔。因此,若要將其序列化(serialize),就必須解決這些不一致(比如輸出所有在元素範圍內有效的命名空間的聲明)。
一個資訊集可以包含最多11種不同類型的資訊項(下面將進行介紹)。每個資訊項都有若干屬性(properties)。為了引用方便,每個屬性都被給予一個名稱。在本規範中,屬性名將用方括號括起來,比如[屬性名]。下面在介紹各資訊項時,將給出它們的對應部分在XML 1.0推薦標準[XML]中的定義和/或語法的鏈結。
XML定義: document (Section 2, Documents)
XML語法: [1] Document (Section 2.1, Well-Formed XML Documents)
每個資訊集有且僅有一個文檔資訊項(document information item)。資訊集中的所有其他資訊項都可以從文檔資訊項的屬性以及屬性的屬性等等來獲得。
文檔資訊項包含以下屬性:
1.
[children] 一個子資訊項(child information items)的有序列表(以它們在文檔中的出現次序為序)。本有序列表含有一個元素資訊項(element information
item)。所有位於文檔元素(document element)外部的處理指令(processing instruction,簡稱PI)在本有序列表中都有一個相應的PI資訊項(processing
instruction information
item)。所有位於文檔元素外部的注釋(comment)在本有序列表中都有一個相應注釋資訊項(comment information
item)。而位於DTD中的PI和注釋在本有序列表中則沒有相應的資訊項。如果XML文檔有文檔類型聲明(document type
declaration),則本有序列表中有一個文檔類型聲明資訊項(document type declaration information item)。
2. [document element] 對應于文檔元素的元素資訊項。
3.
[notations] 一個格式資訊項(notation information items)的無序集。所有在DTD中聲明的格式(notation)在本無序集中都有一個相應的格式資訊項。如果存在被多次聲明的格式(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)以外的值。
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:name="")也被認為是一個命名空間聲明。前置字的取消聲明已被加入Namespaces in XML 1.1。根據定義,所有的命名空間屬性(包括被指定值的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:name=""的命名空間資訊項,因為它們沒有聲明命名空間,而是取消聲明缺省命名空間或命名空間前置字)。
因為就xmlns=””而言,它並沒有聲明命名空間。相反,它的作用只是取消(或使無效)缺省命名空間。在解析被限定名稱(qualified name)的命名空間前置字時,本屬性應優先於[namespace attributes]屬性被使用。因為如果是合成的資訊集(Synthetic Infoset),這兩個屬性可能會不一致。
8.
[base URI] 元素的基準URI。
9.
[parent] 本屬性的值為一個文檔資訊項或元素資訊項,它的[children]屬性包含本資訊項。
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值來對待。本屬性(property)的值不受屬性值(attribute value)有效性的影響。
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屬性值(在當前文檔範圍內)中出現,或者[attribute type]屬性的值是NOTATION、並且該標記(notation)被多次聲明,則本屬性沒有值(no value)。
8.
[owner element] 本屬性的值為一個元素資訊項,它的[attribute]屬性包含本資訊項。
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]屬性值相同。如果該格式(notation)未被聲明或被多次聲明,則本屬性沒有值(no value)。如果尚未讀到聲明,並且文檔資訊項的[all
declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。
5.
[parent] 本屬性的值為一個文檔資訊項、元素資訊項或文檔類型聲明資訊項,它的[children]屬性包含本資訊項。
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]屬性包含本資訊項。
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處理器(validating
XML processor)必須提供這個資訊。如果包含的元素未被聲明或背聲明多次,則本屬性沒有值(no value);如果尚未讀到聲明,而且文檔資訊項的[all
declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。在字元不是空白的情況下,本屬性總為false。
3.
[parent] 本屬性的值為一個元素資訊項,它的[children]屬性包含本資訊項。
XML定義: comment (Section 2.5, Comments)
XML語法: [15] Comment (Section 2.5, Comments)
原始文檔中的每個(除了DTD中的)XML注釋都有一個相應的注釋資訊項(comemnt information item)。
注釋資訊項包含以下屬性:
1.
[content] 本屬性的值為一個字串,它表示注釋的內容。
2. [parent] 本屬性的值為一個文檔資訊項或元素資訊項,它的[children]屬性包含本資訊項。
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] 本屬性的值為文檔資訊項。
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]屬性值相同。如果該格式(notation)未被聲明或被聲明多次,則本屬性沒有值(no value)。如果尚未讀到聲明,但文檔資訊項的[all
declarations processed]屬性為false(即可能還有未讀到的聲明),則本屬性的值為未知(unknown)。
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)。
每個元素對應的元素資訊項都有一個[in-scope namespaces]屬性,對於在該元素範圍內有效的每個命名空間在這個屬性中都有一個相應的命名空間資訊項(namespace information item)[譯注//注意:並不是在該元素範圍內有效的每個命名空間都是只有一個命名空間資訊項。比如,如果在該元素範圍內有兩個不同的命名空間前置字綁定到同一個命名空間上,則將有兩個命名空間資訊項,它們分別對應於這兩個綁定。因此,嚴格地說,是該元素範圍內有效的每個命名空間綁定對應一個命名空間資訊項。]。
命名空間資訊項包含以下屬性:
1. [prefix] 命名空間的前置字。從語法上說,本屬性(property)的值為屬性名(attribute
name)[譯注//即聲明本命名空間的那個屬性的屬性名]中位於前置字“xmlns:”後的部分。如果屬性名為“xmlns”(即聲明缺省命名空間),則本屬性沒有值(no value)。
2.
[namespace name] 命名空間前置字對應的命名空間名(namespace
name)。
資訊集的用途在於提供一組定義,因此,一致性是對那些使用了這些定義的規範[譯注//比如SOAP和OWL等]而言的,而不是對這些規範的實現而言的。
引用了XML資訊集的規範必須:
·
指出哪些資訊項和屬性對於實現該規範是必需的。(這一點間接地對那些實現該規範的處理器施加了一致性需求)
·
指出如何處理那些非必需的資訊項和屬性(比如,可以將它們原封不動地傳遞至下一處理階段)。
·
記錄所有要求XML文檔提供、而資訊集沒有定義的資訊。
·
記錄那些用法與資訊集的定義不同的術語(這是應當避免的)。
如果某個規範允許構建一個存在不一致的資訊集(參見合成的資訊集部分),它可以描述如何解決這些不一致,並且在序列化資訊集時這樣去做。
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 in XML, W3C, eds. Tim Bray, Dave Hollander, Andrew
Layman. 14 January 1999. Available at http://www.w3.org/TR/REC-xml-names/
.
Namespaces in XML
1.1, W3C, eds. Tim
Bray, Dave Hollander, Andrew Layman, Richard Tobin. 4 February 2004. Available at
http://www.w3.org/TR/xml-names11
.
Key words for use in RFCs to Indicate Requirement Levels, ed. S. Bradner. March 1997. Available at http://www.ietf.org/rfc/rfc2119.txt
.
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 1.1
Extensible Markup Language (XML) 1.1, W3C, eds. Tim Bray, Jean
Paoli, C.M. Sperberg-McQueen, Eve Maler,
John Cowan, François Yergeau. 4 February 2004. Available at http://www.w3.org/TR/xml11
.
XML Base, W3C, ed. Jonathan Marsh.
February 2000. Available at http://www.w3.org/TR/xmlbase
.
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-Information Set Liaison
Statement, W3C, ed. Steven
J. DeRose. 24 February 1999. Available
at http://www.w3.org/TR/NOTE-xptr-infoset-liaison
.
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,
W3C, ed. Richard Tobin. 6 April 2001. Available at http://www.w3.org/TR/xml-infoset-rdfs
.
儘管XML推薦標準[XML]主要關心的是XML的語法,但它也對XML處理器(XML Processor)作了一些具體的通報需求(reporting requirements)。
通報需求包括錯誤(它不屬於本規範的討論範圍)和文檔資訊。XML對文檔資訊通報的所有需求都已被綜合到本規範中。括弧中的數位表示它們在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處理器必須為這個屬性提供缺省值。
看下麵的示例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!”)中的十一個字元。
當前版本的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中為屬性聲明的缺省值。
需要XML資訊集的形式化描述,請參見RDF Schema for the XML Information Set。