2007-2-25 17:31
hinet
2.3.3 实体的使用方式
2.3.3 实体的使用方式
实体的使用包括两部分:实体声明和实体引用。
实体声明
对于实体的声明应该放在文件类型DOCTYPE中。DOCTYPE一般放在文件头(即XML声明和DTD)之后,XML元素之前。这样一来,XML文件就变为下面的形式:
<DOCTYPE 文件根元素名 [ ]>
<文件根元素名>
具体数据内容
实体引用
说到实体引用,大家可能想起前面我们曾用“<”代表字符“〈”。不错,这就是一个实体引用。
简而言之,实体引用指的是引用一个在实体声明中已经声明过的一个实体。实体引用的形式很简单:
&实体名;
不过,实体引用有以下几点规则一定要注意:
在引用XML实体之前,必须已经在XML文件中对此实体进行过声明;
在实体引用中不能出现空格。也就是说,& lettersign;和&letterhead ;的用法都会引起错误。
尽管在一个实体中可以再引用其它实体,但是不能出现循环引用。也就是说,一个实体不能引用它自己;同样,也不能出现实体A引用实体B,然后实体B再反过来引用实体A的情况。
实体引用不能在DOCTYPE声明中出现。
实体引用的文本必须是形式良好的XML。
同样,参数实体的引用与一般实体的引用大同小异,只是要把实体前的符号&换为%就可以了,形式是:
%实体名;
下面,我们就来看一个完整的实体声明和实体引用的例子:
<DOCTYPE 联系人列表 [ <ENTITY B公司地址 “上海南京路9876号”〉
<联系人列表>
<联系人>
<姓名>张三
<公司>>A公司>
<地址>&A公司地址
<联系人>
<姓名gt;李四
<公司>B公司
<地址>&B公司地址〈/地址〉
<联系人>
<姓名>王五>
<公司>B公司
<地址>&B公司地址〈/地址〉
从这个例子中可以看出,一旦哪个公司搬家了,只须改变实体声明中有关该公司的地址,所有这个公司的联系人的地址也就都改过来了,所做的重复劳动少多了!
此外,实体引用不仅可以出现在字符数据中,还可以出现在标记的属性中。例如下面这个例子:
<联系人 公司=“B公司” 地址=“&B公司地址;”>
如果在属性中出现实体引用,不但要遵守前面所述的实体引用的种种规则,还要注意以下两点:
在标记属性中不能引用一个外部实体。
引用的文本中不能出现字符“<”,否则替换后就不再是一个“形式良好的”XML文件了。
通过这一节的讲述,想必大家已然了解:实体主要是用来代替字符数据的,它可以节省大量的录入工作。