XML是W3C定义的文档格式https://www.w3.org/XML/,相关的规范可以在https://www.w3.org/XML/Core/#Publications寻得。
Extensible Markup Language (XML) 1.0 (Fifth Edition)
- W3C Recommendation 26 November 2008
-
Abstract
- XML全称Extensible Markup Language,是SGML的一个子集。是为了将SGML适配成HTML,XML作为两者的中间格式。
-
Status of this Document(略)
-
1 Introduction
- 描述的是一类数据对象,称作XML文档,以及计算机应该如何处理此类文档。
- XML是SGML(Standard Generalized Markup Language)的特化
- XML文档基本存储单元为实体,其中保存已解析或未解析的数据
- 已解析的数据有字符构成,有些是字符数据,有些是签记(markup)
- 签记录编了文档的存储布局和逻辑结构
- XML提供机制可以用于给存储布局和逻辑结构施加约束
-
1.1 Origin and Goals
- XML的设计目标(节选)
- 最少化可选特性,最好没有
- 签记是否简明,无关紧要
- XML的设计目标(节选)
-
1.2 Terminology
- 采用了RFC2119术语
- 下面额外的术语用于XML处理器
- error,对规范的违反,除非指明,否则其结果未定义
- fatal error,停止正常处理,但是可以尝试查找更多错误
- at user option,按用户
- validity constraint,某规则,应用于所有有效的XML文档,违反此规则意味着错误
- well-formedness constraint,应用于格式完好的XML文档
- match,两个字符串或两个名字对比一致
- ISO/IEC 10646中,同一字符可以有多种表示
- 大小写不做同
- 字符串由语法产生式定义
- 元素由其声明定义
- for compatibility,那些XML兼容SGML的方面
- for interoperability,一些非强制的推荐,用于增强XML文档能够被SGML处理器处理的能力
-
2 Documents
- 定义:一个数据现例是一个格式完好的XML文档。然后,XML文档必须符合约束条件才算是有效的
- 每个XML文档同时有逻辑以及物理结构。
- 物理上,文档由实体单元构成,每个实体可以参照其他实体。文档从根实体(也叫文档实体)开始。
- 逻辑上,文档由声明、元素、注解、字符引用以及处理指令构成。这些都是以签记的形式表现的。
-
2.1 Well-Formed XML Documents
- 一个文本对象是格式完好的XML文档的前提
- 整体满足格式完好性要求
- 文档中直接或间接引用到的已解析实体,都是格式完好的
- Document的产生式
document ::= prolog element Misc*
- 顶级节点以外的节点,都有上级节点
- 一个文本对象是格式完好的XML文档的前提
-
2.2 Characters
- 已解析的实体包含文本,也就是字符序列,表示字符数据或者签记。
- 字符定义为文本的原子单位,由ISO/IEC 10646:2000规定。
- 文中给出了字符的有效取值范围
- 不鼓励文档作者使用"compatibility characters"以及其他一些字符
-
2.3 Common Syntactic Constructs
- 定义了一些措辞
- 空白符
- name token,可用于名字的字符序列
- NameStartChar, NameChars;
- 字面值
- EntityValue、AttValue、SystemLiteral、PubidLiteral、PubidChar
- 定义了一些措辞
-
2.4 Character Data and Markup
- 文本由相互嵌套的字符数据和签记构成
- 签记是有具体定义的
- 签记以外的就是字符数据,其产生式为
CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
- 文本由相互嵌套的字符数据和签记构成
-
2.5 Comments
- 可以在签记之外的任意位置出现,以及其他一些特别允许的地方
- 注解内不能出现
--
-
2.6 Processing Instructions
- 用于给应用提供处理指令
- 不属于文档的字符数据,但是必须传给应用
-
2.7 CDATA Sections
- 字符数据中的任意位置皆可放置
- 其中的内容只能被解释为字符数据,而不能解释为签记(
]]>
除外) - 以
<![CDATA[
开头,以]]>
结尾
-
2.8 Prolog and Document Type Declaration
- XML文档应以XML声明开头,例如
<?xml version="1.0"?>
- 具有此声明文档才完整并且是格式完好,但文档是否有效要看其约束
- 签记的作用是描述存储以及逻辑结构,来将属性的名和值关联到逻辑结构上
- DTD(document type declaration)机制可以用于施加约束于逻辑结构之上,以及支持预定义的存储单位。
- DTD必须在第一个元素之前定义
- (剩余略)
- XML文档应以XML声明开头,例如
-
2.9 Standalone Document Declaration
- 相关声明
<?xml version="1.0" standalone='yes'?>
- (剩余略)
- 相关声明
-
2.10 White Space Handling
- 特殊的属性
xml:space
用于告知此元素中的空白符要保留给应用。 - 有效文档中,此属性也必须现声明才能使用
<!ATTLIST poem xml:space (default|preserve) 'preserve'>
- 或
<!ATTLIST pre xml:space (preserve) #FIXED 'preserve'>
- 特殊的属性
-
2.11 End-of-Line Handling
- XML处理器在解析前必须将换行规范成
#xD #xA
,或者单个#xA
- XML处理器在解析前必须将换行规范成
-
2.12 Language Identification
xml:lang
可以用于指定语言,此属性也必须先声明后使用。- 属性的值来自于IETF BCP 47
- (剩余略)
-
3 Logical Structures
- XML文档包含一至多个元素,其边界由开始标签和结束标签框定、或者由空元素标签
- 每个元素有一个类型,由其名字给出,有时叫做其GI(generic identifier),可伴随一个属性集合,每个有名和值
- (剩余略)
-
3.1 Start-Tags, End-Tags, and Empty-Element Tags
- (略)
-
3.2 Element Type Declarations
- (停)
Namespaces in XML 1.1 (Second Edition)
W3C Recommendation 16 August 2006
-
Abstract
- 提供一个简单的方法,通过IRI来确认XML中使用的元素和属性的名字。
-
Status of this Document
-
1 Motivation and Summary
- 单一XML文档,其元素和属性,可能会包含被多个软件模块使用的
- 此规范描述了XML命名空间机制,用于扩充元素和属性的名字
-
1.1 A Note on Notation and Usage(略)
-
2 XML Namespaces
-
2.1 Basic Concepts
- XML名字空间由一个IRI引用(RFC3987)来表示
- 扩充名是一个对子,包含名字空间名和本地名
- IRI引用可以包含名字中不允许的字符,所以扩充名不直接使用,转而使用的是限定名(qualified name),也就是一个受命名空间解释影响的名字
- 措辞上,限定名是带前缀名、或无前缀名
- 通过基于属性的声明措辞来将前缀绑定到命名空间,指定一个默认名字空间给无前缀名
-
2.2 Use of IRIs as Namespace Names
- 空字符串,虽也是一个合法的IRI引用,但不认为是一个命名空间名字
- 相对IRI引用,已经被废弃了。
-
2.3 Comparing IRI References
- IRI引用当作字符串对比,大小写敏感,且不支持转义
- 在命名空间声明中,IRI引用此属性的规范化的值
-
-
3 Declaring Namespaces
- (停)