XML简介之DTD约束的相关实例

这是一个关于Book的DTD约束文件

Book.dtd

<!ELEMENT book (bookname,bookprice,author)>

<!ELEMENT bookname (#PCDATA)>
<!ELEMENT bookprice (#PCDATA)>
<!ELEMENT author (#PCDATA)>

在外部引用该约束的文件

Book.xml

<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
<!DOCTYPE bookshelf SYstem "Book.dtd">
<book>
<bookname>java程序设计</bookname>
<bookprice>30元</bookprice>
<author>lijizh1013</author>
</book>

再来看一个将约束写到xml文件中的电视时间表的实例:

<?xml version="1.0" encoding="UTF-8"?>

//约束声明部分
<!DOCTYPE TVSCHEDULE [

<!ELEMENT TVSCHEDULE (CHANNEL+)>
<!ELEMENT CHANNEL (BANNER,DAY+)>
<!ELEMENT BANNER (#PCDATA)>
<!ELEMENT DAY (DATE,(HOLIDAY|PROGRAMSLOT+)+)>
<!ELEMENT HOLIDAY (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT PROGRAMSLOT (TIME,TITLE,DESCRIPTION?)>
<!ELEMENT TIME (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>
<!ELEMENT DESCRIPTION (#PCDATA)>

<!ATTLIST TVSCHEDULE NAME CDATA #required>
<!ATTLIST CHANNEL CHAN CDATA #required>
<!ATTLIST PROGRAMSLOT VTR CDATA #IMPLIED>
<!ATTLIST TITLE rating CDATA #IMPLIED>
<!ATTLIST TITLE LANGUAGE CDATA #IMPLIED>

]>
//正式的xml文件部分

<TVSCHEDULE NAME = "LIJIZH">
<CHANNEL CHAN = "1013">
<BANNER>A</BANNER>
<DAY>
<DATE>1991-10-13</DATE>
<HOLIDAY>100 DAY</HOLIDAY>
</DAY>
</CHANNEL>
</TVSCHEDULE>

其他相关实例:

一个新闻报纸的实例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE NEWSPAPER [

<!ELEMENT NEWSPAPER (ARTICLE+)>
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BYLINE (#PCDATA)>
<!ELEMENT LEAD (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ELEMENT NOTES (#PCDATA)>

<!ATTLIST ARTICLE AUTHOR CDATA #required>
<!ATTLIST ARTICLE EDITOR CDATA #IMPLIED>
<!ATTLIST ARTICLE DATE CDATA #IMPLIED>
<!ATTLIST ARTICLE EDITION CDATA #IMPLIED>

<!ENTITY NEWSPAPER "Vervet Logic Times">
<!ENTITY PUBLISHER "Vervet Logic Press">
<!ENTITY copYRIGHT "copyright 1998 Vervet Logic Press">

]>
<NEWSPAPER>
<ARTICLE AUTHOR = "lijizh">
<HEADLINE>STUDYING</HEADLINE>
<BYLINE>1990-10-12</BYLINE>
<LEAD>lijizh</LEAD>
<BODY>This is a pare of newspaper!</BODY>
<NOTES>Please look at the newspaper!</NOTES>
</ARTICLE>
</NEWSPAPER>

一个关于国家从中央到地方的最高长官的名称的实例:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE country [ <!ELEMENT country (countries+)> <!ELEMENT countries (province+)> <!ELEMENT province (city+)> <!ELEMENT city (countryside+)> <!ATTLIST countries name CDATA #required> <!ATTLIST province name CDATA #required stadholder CDATA #required> <!ATTLIST city name CDATA #required mayor CDATA #required> <!ATTLIST countryside name CDATA #required alcalde CDATA #required> ]> <country> <countries name = "China"> <province name ="HeBeiSheng" stadholder = "张三"> <city name = "BaoDingShi" mayor = "李四"> <countryside name ="BaiGouZhen" alcalde = "王五"> lijizh </countryside> </city> </province> <province name ="HeNanSheng" stadholder = "马六"> <city name = "KaifengShi" mayor = "橫七"> <countryside name = "GaoYangZhen" alcalde = "竖八"> lijizh </countryside> </city> </province> </countries> </country>

其实对于我们这些Java程序员来说,我们只要能够读懂DTD的约束文件,并且能够将简单的约束文件中的信息反映到我们的xml文件中就已经达到学习的目的了,因为,我们主要使用xml文件配置文件的,另外,由于DTD约束存在一些弊端,所以在以后我们还可能会用到Schema约束来代替DTD约束。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念