荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: playboy (冰河), 信区: Program
标  题: 可扩展标记语言(XML) 1.0(2)
发信站: BBS 荔园晨风站 (Sun May 28 12:19:52 2000), 转信

1. 绪论
可扩展标记语言,缩写为XML,描述了一类称为XML文档的数据对象,
同时也部分地描述了处理这些数据对象的计算机程序的行为。XML是
SGML(标准通用标记语言[ISO 8879])针对应用的一个子集,或者说是
SGML的一种受限形式。根据定义,XML文档是合乎规范的SGML文档。

XML文档由称为实体的存储单元组成,实体包含解析数据或未解析数
据。解析数据由字符组成,其中一些字符组成字符数据,另一些字符
组成标记。标记中包含了对文档存储格式(storage layout)和逻辑结
构的描述。XML提供了一种机制用于约束存储格式和逻辑结构。

称为XML处理器的软件模块用于读取XML文档,存取其中的内容和结构
。XML处理器被设想为是为另一个称为应用的模块作处理。本规范从
XML处理器应如何读取XML数据以及应向应用提供哪些信息的这两个方
面,描述了要求XML处理器作出的动作。

1.1 开发者和开发目标
XML由XML工作组(原先的SGML编辑审查委员会)开发,此工作组由
World Wide Web Consortium(W3C)在1996年主持成立。工作组由
Sun Microsystems的Jon Bosak负责,同样由W3C组织的XML SIG
(Special Interest Group)(原先的SGML工作组)积极参与了XML工
作组的工作。XML工作组的成员在附录中给出。工作组与W3C的联系
人是Dan Connolly。

XML的设计目标如下:

XML应该可以直接在因特网(Internet)中使用。
XML应该支持大量不同的应用。
XML应该与SGML兼容。
处理XML文档的程序应该容易编写。
XML中的可选项应尽可能少,理想状况下应为零。
XML文档应该清晰明了,可读性强。
XML应易于设计。
XML的设计应该正式而且简洁。
XML文档应易于创建。
XML标记的简洁性相应
计算机处理程序所需的所有信息。

在完整保留所有文本和法律注意事项的前提下,本版本的XML规范可以
自由分发。
1.2 术语
用于描述 XML 文档的术语在此规范的正文中定义。在这些定义中以及
描述一个XML处理器的动作时,使用了下表中的术语:

可以(may)
允许合乎规范的文档和XML处理器按所描述的方式工作,但不要求必须
如此。

必须(must)
要求合乎规范的文档和XML处理器按所描述的方式工作; 否则出现错误。

错误(error)
对本规范中的规则的违反; 其结果不确定。合乎规范的软件可以检测和
报告错误,并可以从中恢复。

严重错误(fatal error)
合乎规范的XML处理器必须检测到,并向应用报告的一类错误。在遇到
严重错误之后,处理器可以继续处理数据以发现更多的错误并可以向应
用报告这些错误。为了支持错误的更正,处理器可以向应用提供文档中
未经处理的数据(字符数据和标记的混合体)。但是,一旦检测到一个严
重错误,处理器必须停止正常的处理(也就是说,它必须停止以正常的
方式向应用提供与文档逻辑结构有关的数据和信息)。

由用户选择(at user option)
合乎规范的软件可以或者必须(取决于句子中的情态动词)按所描述的方
式工作; 如果它满足这个条件,它必须同时提供用户一种手段,使得用
户能够启用和禁用所描述的工作方式。

有效性约束(validity constraint)

适用于所有有效的XML文档的一种规则。违反有效性约束属于错误; 由用
户选择,进行验证的XML处理器必须报告这些错误。

格式约束(well-formedness constraint)
适用于所有有效的XML文档的一种规则。违反格式约束属于严重错误。

匹配(match)
(对于字符串和名字:)被比较的两个字符串或名字必须完全相同。在
ISO/IEC 10646中有多种可能表示方式的字符(例如,既有预定义
(precomposed)形式和基字符(base)+变音符形式的字符)只在两个字符
串中的表示方式相同时才匹配。由用户选择,处理器可以将这些字符规
范成某种规范形式。不进行字符的大小写转换。(对于句法中的字符串
和规则:)如果一个字符串属于一个句法产生式产生的语言,则它匹配
这个产生式。(对于内容和内容模型:)当一个元素符合"元素有效性"约
束中的描述时,它匹配其声明.

兼容性考虑(for compatibility)
仅用于保证与SGML兼容的XML特性。

互操作性考虑(for interoperability)
是一个不具约束性的建议,目的是增加XML文档能被在ISO 8879的WebSGML
改编附件之前已有的SGML处理器处理的可能性。

2. 文档
如果一个数据对象满足本规范中格式良好的要求时,它是一个XML文档。一
个规范的XML文档如果满足某些进一步的约束,它将更为有效。

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

2.1 格式良好的(Well-Formed)XML文档
一个文本对象如果满足以下条件,它将是一个格式良好的XML文档:

1.作为一个整体,它匹配文档(document)产生式。
2.它满足本规范中定义的所有格式约束。
3.此文档中直接或间接引用的每一个解析实体都是格式良好的。

文档
[1]  document ::=  prolog element Misc*

匹配document产生式意味着:

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

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

2.2 字符
一个解析实体包含文本(text),文本是一个字符(character)序列,可以
表示标记或字符数据。一个字符是ISO/IEC 10646[ISO/IEC 10646]中定
义的文本最小单元。合法的字符包括制表符,回车,换行以及Unicode和
ISO/IEC 10646中定义的合法的图形字符。不提倡使用[Unicode]6.8节中
定义的"兼容字符(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)+

为方便起见,字符被分为字母,数字和其他字符三采用的任何名字空间机制实际会采用冒号
作为定界
符。)实际上,这意味着除非用于名字空间实验,XML文档编者不应该
在XML名字中使用冒号,但XML处理器应该接受冒号作为一个命名字符。

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

名字和记号
[4]  NameChar ::=  Letter | Digit | '.' | '-' | '_' | ':' |
CombiningChar | Extender
[5]  Name ::=  (Letter | '_' | ':') (NameChar)*
[6]  Names ::=  Name (S Name)*
[7]  Nmtoken ::=  (NameChar)+
[8]  Nmtokens ::=  Nmtoken (S Nmtoken)*


字面数据是任何用引号括起的字符串,不包括用作定界符的引号。字面
数据用于指明内部实体的内容(EntityValue),属性值(AttValue),以及
外部标识符(SystemLiteral)。注意,对SystemLiteral的解析可以不扫
描标记。

字面数据
[9]  EntityValue ::=  '"' ([^%&"] | PEReference | Reference)* '"'
      | "'" ([^%&'] | PEReference | Reference)* "'"
[10]  AttValue ::=  '"' ([^<&"] | Reference)* '"'
      | "'" ([^<&'] | Reference)* "'"
[11]  SystemLiteral ::=  ('"' [^"]* '"') | "'" [^']* "'")
[12]  PubidLiteral ::=  '"' PubidChar* '"' | "'" (PubidChar - "'")* "'"
[13]  PubidChar ::=  #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]

--
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.90]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店