XML语法基础(二)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.命名的约定(合法与不合法)

第二节XML语法

在这一章,我们将讨论XML语法的技术细节。

XML的语法规则是我们利用它进行任何工作的基础,如果一个数据对象满足XML规范中格式良好(Well-Formed)的要求时,它就是一个XML文档。一个规范的XML文档如果满足某些进一步的约束,它将更为有效。

一、语法基础

我们首先从字符、命名等入手了解XML语法的一些基础知识。

1)字符

由于XML要在全球范围内使用的,所以不能局限于7位的ASCII码字符集,XML指定的字符集均在16位的Unicode2.1字符集(参见 它目前与ISO/IEC10646是一致的)中定义。

一个字符是ISO/IEC10646中定义的文本最小单元,合法的XML字符包括:

三个ASCII控制符(水平制表符、换行、回车);

所有普通的ASCII可显示字符;

以及所有其它统一代码字符值(用十六进制表示),如下表。

统一代码字符值

字符值(十六进制)描述

#x09 水平制表符(HT)

#x0A 换行(LF)

#x0D 回车(CR)

#x20 - #x7E ASCII显示字符

#x80 - #xD7FF 统一代码字符(包括Latin-1)

#xE0000 - #xF8FF “私有区域”

#xF900 - #xFFFD CJK(中日韩)兼容的象形文字

#x10000 - #x10FFFF 待用集合“高度私有区域”

统一代码中包含一个数量超过137000的字符集和用于应用程序特定字符,它被称做“保留区域”。当然,使用这些私有字符进行任何XML数据的交换都需要就这些字符的解释单独达成一致,所以,统一代码的这一部分不应该在XML数据对象里使用,因为他们需要在相当广泛的范围内进行交换。

把字符代码编码成位模型的机制,在各个实体间可能会有不同,所有的XML处理器都必须接受ISO/IEC 10646中的UTF-8和UTF-16编码。

2)命名约定

在XML中使用的结构几乎总是被命名的,命名规则如下:

必须以字母、下划线(_)、或冒号(:)开头;

后面跟着是有效命名字符,有效命名字符除了前面的内容,还包括数字、连字符(-)、句点(.);

在实际应用中不应该使用冒号,除非是用作命名空间的分割符。

记住,标记不一定是英文,可以是中文或其它语言。

在命名方面另一个限制,是它们不应该使用XML三个字符的各种组合(如:xml、XML、xML、Xml),W3C保留了对这三个字母开头的命名使用权。

下面是一些合法的命名:

Version

VERSION

Java_Xml:Version

版本

下面是一些非法的命名:

-Version

4Version 开头不能用- 和4

Amount$

版本2 $和上标2是非法的

XmlExample

XML_Example xml是保留字符,当时如果它们是W3C定义的又是另一回事了。

其实,如果在开头加上下划线,那就又是合法的了,比如:_4Version或_XML都是合法的。

3)空白

不管是对人类语言还是计算机语言来说,空白确实是一个非常重要的语言概念,在XML数据中,只有4个字符可以作为空白使用:

#x09 水平制表符(HT)

#x0A 换行(LF)

#x0D 回车(CR)

#x20 ASCII码中的空格字符

无论如何,制表位占用的位置都不会超过一个字符,所以它们中的每一个都可以简单的看作是一个字符。同样,任何由LF 、CR 隐含的格式,也是交给应用程序样式表单来处理。

同时,统一代码定义了许多不同种类的空格,但其中没有一个能成为XML的空格。

XML处理空格的规则非常简单:解析器将保留内容中所有的空白,并且不加修改的传递给应用程序,但元素标记或属性中的空格会被删除。

在HTML中,文本中无论多少空格实际上只有一个,更多的空格必须使用 、或者表格来实现。XML对空格的处理方式,实际上简化了空格的处理,同时也避免了SGML关于空格的复杂规则。

4)字符引用

虽然在XML中,可以直接使用字符输入,但有时候必要的情况下,也可以使用字符引用。字符引用是字符文字形式的替代品,当对文字形式可能导致违反XML格式要求的时候,可以使用字符引用来实现它。

字符引用可以用来表示一个可显示的字符,它由十进制或十六进制的数字前面加上“&#”或“&#x”,后面紧跟一个分号“;”组成。

尽管在HTML中十进制表示比较通用,但在XML中还是偏向于十六进制形式,因为XML统一代码本来就是使用十六进制的。

你可以看看在下面的代码中都是如何显示的:

01

®

程序员

1972/12/12

wu@

©

02

­

审计员

1973/09/12

zhan@

©

5)实体引用

实体引用允许在元素内容或属性值中插入任何字符串,这就为字符引用提供了一种助记的替代方式。

实体引用是一种合法的XML名字,前面带有一个符号“&”,后面带有一个分号“;”。

&name;

有些符号,是XML专用的,如果在内容中直接使用这些符号,将会出现错误,这时,可以使用转义序列的实体。

& 通常用来替代&(除了在CDA TA中,后面会有详述)

< 通常用来替代< (除了在CDATA中)

> 通常用来替代>(除了在CDATA中,如果>紧跟着字符串“]]”就必须使用这个实体)' 可用来替换字符串中的单引号“’”

" 可用来替换字符串中的双引号“””

请看下面的例子:

相关文档
最新文档