• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

义但又不是真正的文档内容的元数据。注释可能出现在文档中除其他标记部分以外的任何地方。
X M L注释的基本语法是:
其中“ comment text ”部分可以是任何不包含“ - -”的字符串(这主要是为了保证对
S G M L的兼容性)。此外,“. . .”部分不能以连字号(“-”)结尾,因为这可能造成结束分隔符
的混乱。
注释并不是文档的字符数据的组成部分!在注释部分当中,实体不可能展开,任何标记也
不会被解释。
XML 1.0规范允许,但并不要求X M L处理器为应用程序提供一种方法来获取注释的文本。
因此, X M L应用程序永远不能依靠使用注释来传输特殊指令(而这却是一个相当流行的H T M L
技巧)。
让我们来看一些例子:
36使用XML 高级编程
下载
程序清单2 - 7
下面是一些不合法的注释(它们不能出现在一个元素标记中;“ - -”除非是注释分隔符的一
部分,否则不能使用):
程序清单2 - 8
下面,我们看一看避开大块文本的办法。
2.9 CDATA部分
C D ATA部分是一种用来包含文本的方法,其对象是那些其中的字符如果不如此处理就会被
识别为标记的文本。这项特性对于希望在自己的文档中包含X M L标记的使用举例的作者来说是
最有用的,就像本书中的举例。但这可能是在文档中包含C D ATA部分的唯一说得过去的理由,
因为在使用这些部分时X M L几乎所有的优势都丧失殆尽。
C D ATA部分并不是在X M L文件中包含二进制数据的好办法!这些数据永远不能包含三字节
的序列“5D 5D 3E”(“] ] >”的十六进制表示),因为这个序列可能被解释为C D ATA部分的结尾。
二进制数据可以用B a s e 6 4或其他什么技术编码,只要它能够保证被编码的数据没有包含大于符
号(>)。但是,如果用了这种方法,用B a s e 6 4编码的二进制数据就可以包含在任何元素的内容
当中,因此C D ATA部分也就不必要了。
只要有字符数据出现的地方就可能出现C D ATA部分,但它们不能够嵌套。在C D ATA部分中
唯一能够被识别的标记字符串就是它的结束分隔符(“] ] >”)—小于符号和&符号可能以字符
形式出现;它们不必(也不能)被忽略。
C D ATA部分的基本语法如下:
在这里,“. . .”部分可以是任何字符串,只要不包含字符串“ ] ] >”。
如果你希望包含一个连续的标记块,其中有X M L文档中的实体引用(无需X M L解析器展开
实体或解释元素标记),可以使用下面两种方法的任意一种:
程序清单2 - 9
第2章XML 语法使用37
下载
或者:
程序清单2 - 1 0
从解析器输出到应用程序的字符串在两种情况下是一样的:
第一种方法明显要易于读写一些,而且还有一个额外的好处,就是允许在任何地方都可以
直接剪切粘贴X M L代码。后一种方法仅仅是用正确的实体引用来代替两个标记字符,这样在解
析时它们就不会被错误地解释为元素标记或实体引用(如果希望详细了解解析和解析器,参见
后面的章节)。
2.10 文档结构
根据你可能希望完成的操作,我们已经零敲碎打地了解到可能在X M L文档中使用的许多语
法,下面让我们来看一看文档的整体逻辑结构。
2.10.1 序言
X M L文档是以序言开头的。它用来表示X M L数据的开始,描述字符的编码方法,为X M L解
析器和应用程序提供其他一些配置线索。
序言的组成包括:一个可选的X M L声明(下面就会介绍),可能紧跟着几个(或者没有)注
释、处理指令、空白字符,其后可能有一个可选的文档类型声明(再带着几个可选的注释、处
理指令和空白字符)。由于这些内容都是可选择的,所以就意味着序言可以被省略,而文档仍然
是格式正规的(参见XML 1.0推荐标准的2 . 8节)。
让我们先来看一看序言的第一个组成部分。
1. XML声明
所有的X M L文档可能(也应该!)由一个X M L声明(XML Declaration)开始。虽然文档声
明使用的是同指令处理类似的语法,但从技术上讲,根据X M L推荐标准它们并不是一回事,因
为声明是X M L中的保留部分。
如果包括X M L声明,它必须处在文档最前面—前面不允许有任何空白或注释。严格地讲,
在X M L当中这种声明并不是必须的,但我们后面会看到,当处理文档时,它确实会起到一些优
化的作用。
X M L早期的草案并没有要求名称大小写敏感,所以许多早期实现者,包括微软在内,用
的都是声明的大写版本(“<?XML ... ?>”)。但是,最终的W 3 C推荐标准提出了大小写敏
感的要求,并将“ x m l”规定为小写。这样一来,某些所谓的X M L文档就不再是合法的
XML 1.0数据。
38使用XML 高级编程
下载
下面的例子是一个X M L声明的完整语法(包括可选的属性e n c o d i n g和s t a n d a l o n e):
这些属性已经在XML 1.0规范中做出了定义:
• version—不能省略;值必须为“ 1 . 0”;该属性用来保证对X M L未来版本的支持。
• e n c o d i n g—可选;值必须是一种合法的字符编码,例如“ U T F - 8”、“U T F - 1 6”或者
“I S O - 8 8 5 9 - 1”(即L a t i n - 1字符编码)。所有X M L解析器都要求至少支持U T F - 8和U T F - 1 6。
如果没有包含这个属性,就假设是“ U T F - 8”或“ U T F - 1 6”编码,这取决于开始的
“< ? x m l”字符串的格式。参见本章后面的字符编码部分。
• s t a n d a l o n e—可选;值必须是“ y e s”或“n o”;如果是“y e s”就意味着所有必须的实体
声明都包含在文档中,如果是“ n o”就意味着需要外部的D T D。(参见第3章关于D T D的部
分。)
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(16)