本篇仅给出两个简单的在XMLspy中建立外部和内部引用的DTD实例。
具体的操作和语法请参考其它文档。
一、外部引用DTD
DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT PRODUCTDATA (PRODUCT)+><!--PRODUCTDATA是根节点,子节点是PRODUCT并且它最少要出现一次-->
<!ELEMENT PRODUCT (PRODUCTNAME,DESCRIPTION,PRICE,QUANTITY)>
<!--PRODUCT下又有四个子节点,必须按照给定顺序出现-->
<!--这三个节点都是#PCDATA类型并且可以包含任何字符数据,不能包含任何子元素-->
<!ELEMENT PRODUCTNAME (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!--QUANTITY is an empty element-->
<!ELEMENT QUANTITY EMPTY>
保存
现在,让我们根据这个DTD文档写一个有效的XML文件:
选择新建xml——可扩展型标记语言,选定保存的DTD文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE PRODUCTDATA SYSTEM "D:\我的文档\Documents\Altova\XMLSpy2014\Examples\frist_example.dtd">
<PRODUCTDATA>
<PRODUCT>
<PRODUCTNAME>芭比娃娃</PRODUCTNAME>
<DESCRIPTION>This is a toy for children over 11 years old</DESCRIPTION>
<PRICE>200</PRICE>
<QUANTITY/>
</PRODUCT>
<PRODUCT>
<PRODUCTNAME/>
<DESCRIPTION/>
<PRICE/>
<QUANTITY/>
</PRODUCT>
</PRODUCTDATA>
然后验证有效性,提示valid
二、内部引用DTD
<?xml version="1.0" encoding="GB2312"?>
<!--一个内部DTD的示例,首先写根元素“家庭”-->
<!--包含两个元素,人至少出现一次,家电可以出现人一次,这两个元素都被定义为空类型-->
<!DOCTYPE 家庭[
<!ELEMENT 家庭 (人+,家电*)>
<!ELEMENT 人 EMPTY>
<!ELEMENT 家电 EMPTY>
<!--开始定义属性-->
<!ATTLIST 人
名字 CDATA #REQUIRED
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>
]>
<!--DTD部分结束-->
<家庭>
<人 名字="张三" 年龄="25"/>
<人 名字="李四" 年龄="38" 爱好="踢足球"/>
<家电 名称="彩电" 数量="三" />
</家庭>