|
|
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. |
|
|
译者: |
||
|
时间: |
首次发布于2003年8月10日/最后更新于2003年8月10日 |
|
|
致 谢 感谢所有在文档翻译过程中给予技术指点和解答的专家,他们是: John Cowan , Richard Tobin(University of Edinburgh), Tim Bray 。 |
||
当前版本:
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/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(参考性的)
本规范定义了一个称为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 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转义操作。
信息集中所有属性的值都要根据[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)有着特殊的含义,而这些含义不符合这里的需要。
本规范描述了通过解析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)在本无序集中都有一个相应的格式信息项。
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,它的[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]属性包含本信息项。
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]属性包含本信息项。
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无法得到保留,因为没有这样的语法。