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