实体的声明
有两种类型的实体:一般实体指在文档内容中使用的实体,而参数实体则是在DTD中使用的已分析实体。
==============一般实体===============
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE website [
<!ELEMENT website (name,copyright)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ENTITY name "程序员之家">
<!ENTITY copyright "©2005, 程序员之家, All Rights Reserved">
]>
<website>
<name>&name;</name>
<copyright>©right;</copyright>
</website>
==============参数实体===============
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE website [
<!ELEMENT website (name,copyright)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT copyright (#PCDATA)>
<!ENTITY % name "程序员之家">
<!ENTITY copyright "©2005, %name, All Rights Reserved">(内部DTD不可使用,外部DTD即可使用)
]>
<website>
<!-- <name>&name;</name>-->(不能用)
<copyright>©right;</copyright>
</website>
内部子集中的实体和属性表声明的优先级要比在外部子集中的高。
内部实体和外部实体;内部实体在XML文档内部定义,实体的内容在声明中给出。内部实体都是已分析的实体,它们没有单独的物理存储对象。外部实体在单独的(外部)文件中定义,外部实体可以使已分析实体,也可以是未分析实体。外部一般实体的声明方式如下:
<!ENTITY copyright SYSTEM "http://www.sunxin.org/copyright.xml">
外部公共实体的声明:
<!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.sunxin.org/copyright.xml">