DTD设计
dtd文件
<!--DTD文件定义XML文件的结构;提供语法和规则;可在XML内,也可在XML外-;可自定义->
<?xml version="1.0" encoding="utf-8"?><!--xml版本号,字符编码形式-->
<!ELEMENT 书籍列表(计算机书籍)*> <!--声明混合型元素-->
<!ELEMENT 计算机书籍(书名,价格,简要介绍)><!--定义内部实体,外部实体SYSTEM (实体链接)-->
<!ELEMENT 书名(#PCDATA)><!--定义属性-->
<!ELEMENT 价格(#PCDATA)><!--定义属性-->
<!ELEMENT 简要介绍(#PCDATA)><!--定义属性-->
xml文件
<?xml version="1.0" encoding="utf-8"?><!--xml版本号,字符编码形式-->
<!DOCTYPE 书籍列表 SYSTEM "book.dtd"?><!--引用外部dtd文件-->
<!--由于引用了DTD,规定了XML的规范,所以下面的内容顺序及格式要与dtd中的相同,否则容易出错-->
<书籍列表>
<计算机书籍>
<书名>XML的大话</书名>
<价格>66.66</价格> <!--如果这里价格和书名的位置颠倒则会报错-->
<简要介绍>该书详细参与XML的从出生到衰老的整个过程</简要介绍>
</计算机书籍>
</书籍列表>
结果![](https://img-blog.csdn.net/20160731180905710?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
后来对比着XML和DTD文件瞅了瞅,发现XML引用的DTD文件指有一个文件名,文件名多了去了,那么系统能识别?加上地址试试
<?xml version="1.0" encoding="utf-8" ?><!--xml版本号,字符编码形式-->
<!DOCTYPE 书籍列表 SYSTEM "C:\Users\TGB\Desktop\book.dtd"><!--引用外部dtd文件-->
<!--由于引用了DTD,规定了XML的规范,所以下面的内容顺序及格式要与dtd中的相同,否则容易出错-->
<书籍列表>
<计算机书籍>
<书名>XML的大话</书名>
<价格>66.66</价格> <!--如果这里价格和书名的位置颠倒则会报错-->
<简要介绍>该书详细参与XML的从出生到衰老的整个过程</简要介绍>
</计算机书籍>
</书籍列表>
另外就是我引用的时候多了一个“?”, 然后结果确实也证实我的想法是对的:
Schema设计
xsd文件
<!--Schema文件定义XML文件的结构;提供语法和规则;可在XML内,也可在XML外-;可自定义-->
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:xs="http:www.w3.org/2001/XMLSchema">
<xs:element name="email">
<xs:sequence>
<xs:element name="to" type="xs:string"></xs:element> <!--定义元素to,类型为string-->
<xs:element name="from" type="xs:string"></xs:element><!--定义元素from,类型为string-->
<xs:element name="title" type="xs:string"></xs:element><!--定义元素title,类型为string-->
<xs:element name="body" type="xs:string"></xs:element><!--定义元素body,类型为string-->
<xs:element name="date" type="xs:date"></xs:element><!--定义元素date,类型为string-->
</xs:sequence>
</xs:element name="email">
</schema>
xml文件
<?xml version="1.0" encoding="utf-8"?>
<email xmlns:xs1="http:www.w3.org/2001/XMLSchema-instance" xs1:noNamespaceSchemaLocation="email.xsd">
<to>Dongle@163.com</to>
<from>123456@163.com</from>
<title>about loving</title>
<body>I Love you forever!</body>
<date>2016-7-31</date>
</email>
结果
这次是一次性成功的,很不错!