内部一般实体

来源:互联网 发布:网络连接监控软件 编辑:程序博客网 时间:2024/05/18 17:02
  所谓内部一般实体就是指在xml文档内部定义的并且可以在xml文档中使用的实体,这种实体通常是一段代码的缩写。
一个内部实体声明
语法:
<!ENTITY 实体名称 "实体的值">
引用语法:
&实体名;

 例:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Teams[<!ELEMENT Teams (Team*)><!ELEMENT Team (Teamname,Country,Member+)><!ELEMENT Teamname (#PCDATA)><!ELEMENT Country (#PCDATA)><!ELEMENT Member (#PCDATA)><!ENTITY Email "xxxx@xxx.com"><!ENTITY Tel "xxxxxxx">]><Teams><Team><Teamname>AC</Teamname><Country>Italy</Country><Member>Tel:&Tel;Email:&Email;</Member></Team></Teams>


通过了合法性检验(xmlspy),浏览器查看如下:

<?xml version="1.0" encoding="UTF-8" ?>   <!DOCTYPE Teams (View Source for full doctype...)> - <Teams>- <Team>  <Teamname>AC</Teamname>   <Country>Italy</Country>   <Member>Tel:xxxxxxxEmail:xxxxxxx@xxx.com</Member>   </Team>  </Teams>

内部一般实体除了可以在xml文档的基本元素中引用外,还可以在DTD的内部引用,在DTD内部引用要注意3点:

(1) DTD内部对实体的引用一般只能用于另外一个实体的定义中,但不能用于元素的声明中。

(2) 内部一般实体无须先定义后引用。

(3) 由于内部一般实体无须先定义后引用,因此在一个实体定义中引用另外一个实体时,必须要避免重复引用而造成引用的死循环。

例:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Teams[<!ELEMENT Teams (Team*)><!ELEMENT Team (Teamname,Country,Member+)><!ELEMENT Teamname (#PCDATA)><!ELEMENT Country (#PCDATA)><!ELEMENT Member (#PCDATA)><!ELEMENT Email (#PCDATA)><!ENTITY Email "Email=&Mail;"><!ENTITY Mail "xxxxxxx@mail.com"><!ENTITY Tel "xxxxxxx">]><Teams><Team><Teamname>AC</Teamname><Country>Italy</Country><Member>Tel:&Tel;Email:&Email;</Member></Team></Teams>


浏览器显示结果:

这说明符合(2);如果将内部一般实体的引用用于DTD中的元素的声明会如何呢?

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE Teams[<!ELEMENT Teams (Team*)><!ELEMENT Team (Teamname,Country,Member+)><!ELEMENT Teamname &name;><!ELEMENT Country (#PCDATA)><!ELEMENT Member (#PCDATA)><!ELEMENT Email (#PCDATA)><!ENTITY Email "Email=&Mail;"><!ENTITY Mail "xxxxxxx@mail.com"><!ENTITY Tel "xxxxxxx"><!ENTITY name "AC">]><Teams><Team><Teamname>AC</Teamname><Country>Italy</Country><Member>Tel:&Tel;Email:&Email;</Member></Team></Teams>

该文档的合法检验结果为:


 

原创粉丝点击