自定义实体分为:一般实体和参数实体
1、自定义一般实体
demo8中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT book (detail+)>
<!ELEMENT detail (name,author,publisher,price,url)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ENTITY bj "北京大学出版社">
对应的xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "demo8.dtd">
<book>
<detail>
<name>XML</name>
<author>李白</author>
<publisher>&bj;</publisher>
<price>22.5</price>
<url>
<![CDATA[
<a href="#">链接1</a>
]]>
</url>
</detail>
<detail>
<name>PHP</name>
<author>杜甫</author>
<publisher>&bj;</publisher>
<price>22.5</price>
<url>
<![CDATA[
<a href="#">链接2</a>
]]>
</url>
</detail>
</book>
xml内部定义一般实体:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "demo8.dtd"[
<!ENTITY bj "北京大学出版社">
]>
<book>
<detail>
<name>XML</name>
<author>李白</author>
<publisher>&bj;</publisher>
<price>22.5</price>
<url>
<![CDATA[
<a href="#">链接1</a>
]]>
</url>
</detail>
<detail>
<name>PHP</name>
<author>杜甫</author>
<publisher>&bj;</publisher>
<price>22.5</price>
<url>
<![CDATA[
<a href="#">链接2</a>
]]>
</url>
</detail>
</book>
2、自定义参数实体
参数实体就是在普通实体名字前面加上“%”。
dtd中的代码:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % p "test"> <!-- 先声明后使用 -->
<!ELEMENT roster ((%p;)+)>
<!ELEMENT %p; (name, sex, birthday, score?, skill+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT birthday (#PCDATA)>
<!ELEMENT score (#PCDATA)>
<!ELEMENT skill (#PCDATA)>
<!ATTLIST %p; id ID #REQUIRED>
对应的xml代码:
demo1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE roster SYSTEM "demo11.dtd"[
<!ENTITY % p "teacher"> <!-- 给参数赋值 -->
]>
<roster>
<teacher id="s">
<name></name>
<sex></sex>
<birthday></birthday>
<skill></skill>
</teacher>
</roster>
demo2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE roster SYSTEM "demo11.dtd"[
<!ENTITY % p "student"> <!-- 给参数赋值 -->
]>
<roster>
<student id="s">
<name></name>
<sex></sex>
<birthday></birthday>
<skill></skill>
</student>
</roster>