实体的声明

有两种类型的实体:一般实体指在文档内容中使用的实体,而参数实体则是在DTD中使用的已分析实体。

==============一般实体===============

<?xml version="1.0" encoding="gb2312"?>

<!DOCTYPE website [

<!ELEMENT website (name,copyright)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT copyright (#PCDATA)>

<!ENTITY name "程序员之家">

<!ENTITY copyright "&#169;2005, 程序员之家, All Rights Reserved">

]>

<website>

    <name>&name;</name>

    <copyright>&copyright;</copyright>

</website>

==============参数实体===============

<?xml version="1.0" encoding="gb2312"?>

<!DOCTYPE website [

<!ELEMENT website (name,copyright)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT copyright (#PCDATA)>

<!ENTITY % name "程序员之家">

<!ENTITY copyright "&#169;2005, %name, All Rights Reserved">(内部DTD不可使用,外部DTD即可使用)

]>

<website>

   <!-- <name>&name;</name>-->(不能用)

    <copyright>&copyright;</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">