当前位置--> 首 页 --> 文 章 -->XML

※阅读文章※

XML1.0 中文文档(第二版)---2. 文件


作者:不祥 [文章出自: www.fanqiang.com]

2. 文件 2.1 格式正确的 XML 文件 2.2 字符 2.3 通用语法成分 2.4 字符数据和标记 2.5 注释 2.6 处理指令 2.7 CDATA 段 2.8 序言和文件类型声明 2.9 独立文件声明 2.10 空白处理 2.11 行尾处理 2.12 语言标识

[定义:如果一个数据对象满足本规范中格式正确的之定义时,它是一个 XML 文件。一个格式正确的 XML 文件可以更进一步是有效的,如果它满足某些进一步的约束的话。]

每一个 XML 文件都有逻辑和物理结构。物理上而言,文件由称为实体的单元组成。一个实体可以引用(refer)其他实体,将它们包含在文件中。文件开始于"根(root)"或文件实体。逻辑上而言,文件由声明,元素,注释,字符引用和处理指令组成,所有这些都在文件中用显式标记指明。逻辑和物理结构必须如"4.3.2 格式正确的已析实体"中所描述的那样严格地嵌套。

2.1 格式正确的 XML 文件(Well-Formed XML Documents)

[定义:一个文本对象是一个格式正确的 XML 文件如果它满足:]

  1. 作为一个整体,它匹配 document 产生式。
  2. 它满足本规范中定义的所有格式正确性约束。
  3. 此文件中直接或间接引用的每一个已析实体都是格式正确的
文件
[1] document ::= prolog element Misc*

匹配 document 产生式意味着:

  1. 它包含一个或多个元素
  2. [定义:有且仅有一个称为根(root)或文件元素的元素,它不出现在其他任何元素的内容(content)中。] 对于其他所有元素,如果起始标签在另一个元素的内容中,则其结束标签也在同一元素的内容中。换一个更简单的说法,以起始标签和结束标签为界的各个元素,必须严格地嵌套。

[定义:这样做的结果是,对于每一个非根的元素 C,文件中另有一个元素 PCP 的内容中,而不在其他任何被 P 所包含的元素的内容中。P 被称为 C父元素(parent),而 C 被称为 P子元素(child)。]

2.2 字符

[定义:一个已析实体包含文本(text),文本是一个字符(character)序列,可以表示标记或字符数据。] [定义:一个字符是 ISO/IEC 10646 [ISO/IEC 10646](或 [ISO/IEC 10646-2000])中定义的文本最小单元。合法的字符包括制表符,回车,换行以及 Unicode 和 ISO/IEC 10646 中定义的合法字符。在制定本文档时,在附录 A.1 正式参考文献中引用的标准都是当时的最新版本,在这些标准的增补版或新版中可能会加入新的字符。因此,XML 处理器必须能接受产生式 Char 中所定义范围内的任意字符。不提倡使用 [Unicode] 6.8 节(或 [Unicode3] 3.6 节 D21 )中定义的"兼容字符(compatibility characters)"。]

字符范围
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* 除了代用块(surrogate block),FFFE 和 FFFF 以外的任意 Unicode 字符。*/

将字符代码编码成位模式的机制各个实体间可能会有所不同。所有的 XML 处理器必须接受 10646 中的 UTF-8 和 UTF-16 编码;用于指出所用编码或指定使用其他编码的机制在后面的"4.3.3 实体中的字符编码"中讨论。

2.3 通用语法成分

本节中定义了一些在文法中广泛使用的符号。

S(空白)包括一个或多个空格字符(#x20),回车,换行和制表符。

空白
[3] S ::= (#x20 | #x9 | #xD | #xA)+

为方便起见,字符被分为字母,数字和其他字符三类。字母可以是字母表中的字母,或是一个音节基字符(syllabic base character),也可以是一个表意字符。在"B. 字符的分类"中给出了每一类字符的完整定义。

[定义:名字(name)是以字母或某些标点符号开头的记号,后跟字母,数字,连字符,下划线,冒号或句号,这些符号统称为命名字符(name character)。] 以 "xml" 或其他任何匹配 (('X'|'x') ('M'|'m') ('L'|'l')) 的字符串开头的名字,被保留用于本规范的此版本或后续版本的标准化。

注:

建议 XML 中的名字空间 [XML Names] 中赋予了包含冒号的名字某种含义。因此除非用于名字空间,XML 文件作者不应该在 XML 名字中使用冒号,但 XML 处理器应该接受冒号作为一个命名字符。

Nmtoken(名字记号,name token)是任何命名字符的混合体。

名字和记号
[4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender
[5] Name ::=

文章加入时间: 2004-11-17 14:57:56 责任编辑: w9   (3183 人次查阅)
 
Copyright © 1998-2004 中国PHP联盟 All rights reserved.