• 热门标签

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

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

E N T I T Y 可重用的内容声明
N O TAT I O N 不需要解析的外部内容(例如:二进制数据)的格式声明,以及用于
处理这些内容的外部应用程序
后两种声明起辅助作用。特别是实体( E N T I T Y)用于简化X M L词汇表的设计。它所包含的
内容通常会在D T D或文档中反复出现,因此需要创建特殊的声明。该声明的作用类似于C / C + +
中的i n c l u d e语句,它以特定的名称作为内容的替代符。
表示法(N O TAT I O N)用于处理非X M L内容。表示法用于声明特殊的数据类,并将之与外
部程序相关联。这个外部程序就成为所声明的数据类的处理器。举例来说,如果你的文档与
J P E G图像有关,你可能需要相关的显示程序来接收和展示J P E G二进制数据。当然,你的文档依
赖于接收系统能够提供的处理器。有些设计者为了获得可移植性,宁愿放弃处理器引用。在那
种情况下,表示法将退化为一种输入机制。
我们将在下一节详细讨论表示法和实体。
3.3 正式的DTD结构
现在,你已经对D T D有了一定程度的了解,并学会了如何将它与文档相关联。我们希望前
第3章文档类型定义使用55 下载
面介绍的例子能够激发起你进一步学习如何声明文档结构的兴趣。除了前面提到的四个标记声
明,D T D还将用到其他结构。然而,我们首先来关注一下实体。
下面将要介绍的所有语法都在XML 1.0推荐标准(h t t p : / / w w w. w 3 . o rg / T R / R E C - x m l /)中有
明确的定义。有时,建议中的内容可能会令你感到迷惑,那么不妨看看由Tim Bray编写的
X M L规范解读(Annotated XML Specification),Tim Bray是X M L推荐标准的作者之一。
该文档位于h t t p : / / w w w. x m l . c o m / a x m l / t e s t a x m l . h t m。它是用X M L创建的,因此也不失为一
个有价值的XML应用实例。
3.3.1 实体
X M L提供了声明内容块的方法,你可以根据需要多次引用这些内容块,它不仅能够节省空
间,而且能够减少文档创作者的代码输入量。为了在D T D中声明实体,需要定义实体的名称及
它引用的内容。当你需要使用它时,采用特殊的语法通过名称进行引用,这种特殊的语法能够
说明你所提供的名称是实体引用。它类似于C / C + +中的d e f i n e指令,或其他形式的可替换的样板
文本或内容。文档内容中使用的实体称为通用实体( general entity)。我们可以根据是否解析实
体的内容将定义进一步细化。解析实体( parsed entity)是X M L内容。实体的值称为置换文本。
相反,未解析实体( unparsed entity)可以是非文本内容。即使它是文本,并不一定要求是X M L。
这就是“未解析”一词的来历。如果你知道用于替换的内容不是X M L,或者甚至不是文本,那
么解析器就没有必要对它进行处理。另一方面,解析实体是要粘贴到文档内容中的X M L,因此,
解析器就必须将它传递到文档中。
下面我们将详细地讨论实体的分类,再次重申并扩展上一章介绍的内容。
1. 预定义实体
X M L必须保留某些字符用于本身格式的定义,
例如:尖括号。另外,有些字符是不可打印的。鉴
于此,X M L提供了一些预定义的实体,用户可以利
用这些实体在文档中使用上述字符,并保证不产生
冲突。因此在元素的文本内容中,可以用实体表示
一些特殊字符,以免它们在解析时与文档的标记混
淆。
任何字符都可以表示为数字引用。具体方法是在符号“ & #”之后加上字符的数字值和分号
(它们之间没有空格)。例如,大于号可以表示为& # 6 2 ;。对于使用频率极高的字符, X M L提供
了预定义的实体(参见表3 - 2)。
例如:
2. 通用实体
通用实体是最简单的实体形式。它能够声明与某个名称相关联的可解析的文本块,我们将
通过该名称引用相应的文本。这类实体声明包含关键字E N T I T Y、实体名称和替换值。例如:
56使用XML 高级编程
下载
表3 - 2
字符实体引用
< & l t ;
> & g t ;
& & a m p ;
'(单引号) & a p o s ;
"(双引号) & q u o t ;
利用这个声明,我们只需引用名称“ c o p y r i g h t”,就能够在文档内容的任何位置插入版权信
息。当然,进行实体引用时,我们需要通过某种方式告诉解析器这是实体引用,以免它将实体
名称与标记文本混淆。为此,我们在名称之前增加符号&,在其后增加分号。名称与定界符( &
和;)之间不含空格。例如:
值得注意的是,由于字符&是X M L的保留字符,因此如果我们需要在文档中使用它,必须
借助(前面介绍的)预定义实体。
当实体引用在解析过程中被替换为置换文本时,其结果必须是格式正规的XML。
通用实体也有外部形式,即:将置换文本存放在外部文件中。其声明形式如下:
关键字S Y S T E M用于指示外部源,后面的U R L表示文件的位置。你也可以使用P U B L I C关键
字、U R I标识符和后备的U R L组合。对于文档中的外部实体, X M L建议有一定的限制:属性值
中不能引用可解析的外部实体,以避免实体的字符编码与主文档的编码形式不同。
X M L推荐标准不要求不验证有效性的解析器读取并插入外部实体的内容。
最后,实体不能包含直接或间接的对自身的引用。因此以下声明是不合法的:
现在,让我们来讨论另一种实体:参数实体。
3. 参数实体
仅仅在D T D中使用的解析实体称为参数实体。它使我们能够简便地引用或修改D T D中常用
的结构,我们只需维护一处代码。与逐一修改D T D中出现每个结构相比,这种方法简单得多,
但是当我们打算扩展结构时,仍然需要编辑D T D。参数实体声明由以下几部分组成: E N T I T Y关
键字、百分号、名称和替换值。例如:
关键字CDATA代表字符数据;我们将在属性一节详细讨论它。
上面的置换文本是属性列表声明的一部分,它包含三个普通属性。当解析器处理上述语句
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(24)