|
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, jcowan@reutershealth.com Richard Tobin,richard@cogsci.ed.ac.uk 摘要本規范為那些需要引用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頁面中找到。 如果發現本文檔[譯注//指英文原始文檔]的錯誤,請發送錯誤報告至www-xml-infoset-comments@w3.org(公開檔案)。 本規范的已知錯誤列表位于:http://www.w3.org/XML/xml-names-19990114-errata。 本規范的英文版是唯一的規范性版本(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)的有序列表(以它們在文檔中的出現次序為序)。本有序列表含有一個元素信息項(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)在本無序集中都有一個相應的格式信息項。 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 10646ISO (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). NamespacesNamespaces
in XML,
W3C, eds. Tim Bray, Dave Hollander, Andrew Layman. 14 January 1999. Available at
RFC2119Key
words for use in RFCs to Indicate Requirement Levels,
ed. S. Bradner. March 1997. Available at XMLExtensible
Markup Language (XML) 1.0 (Second Edition),
W3C, eds. Tim Bray, Jean Paoli, C.M. Sperberg-McQueen, Eve Maler. 6 October
2000. Available at XML Base [譯注//XML Base的簡体中文版位于http://xmlbase.w3china.org/]XML
Base,
W3C, ed. Jonathan Marsh. February 2000. Available at 參考性文獻(Informative References)DOMDocument
Object Model (DOM) Level 1 Specification,
W3C, eds. Vidur Apparao, Steve Byrne, Mike Champion, et al. 1 October 1998.
Available at XPointer-LiaisonXPointer-Information
Set Liaison Statement,
W3C, ed. Steven J. DeRose. 24 February 1999. Available at Relative Namespace URI ReferencesResults
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
RDF Schema for the XML Information SetRDF
Schema for the XML Information Set,
W3C, ed. Richard Tobin. 6 April 2001. Available at 附錄 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]屬性為" •
一個屬性信息項。它的[namespace name]屬性為" •
三個命名空間信息項。它們分別對應于命名空間 • 兩個屬性信息項。它們分別對應于兩個命名空間屬性。 • 十一個字符信息項。它們分別對應于字符數据(“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。
|
||||||||||||||