W3CHINA.ORG首页/文档翻译/XML信息集 | 更多信息请访问 W3CHINA.ORG讨论区 |
|
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) | |
时间: | 首次发布于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, 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(参考性的)
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 athttp://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 athttp://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。