一、什么是DTD
百度百科中关于DTD说明如下:
DTD(Document Type Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。DTD文件是一个ASCII文本文件,后缀名为.dtd。
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
简而言之,DTD就是一套规范XML的语法规则,XML中能有什么元素,元素之间的顺序等都是由DTD规范定义。
二、DTD定义
DTD可以在XML中直接定义,也可以通过外部引入,一般是使用外部引入,将DTD与XML分离
(1)XML中,使用如下方式包含:
<?xml version="1.0"?>
<!DOCTYPE users [
<!ELEMENT user (id,name,password)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>
]>
<users>
<user>
<id>001</id>
<name>john</name>
<password>123456</password>
</user>
</users>
(2)外部引入如下:
user.dtd文件:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT users (user+)>
<!ELEMENT user (id,name,password)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>
user.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE users SYSTEM "user.dtd">
<users>
<user>
<id>001</id>
<name>john</name>
<password>123456</password>
</user>
</users>
引入可以使用SYSTEM和public,如果自己项目内部的DTD,就使用SYSTEM,如果外部的,使用public。
三、一些初步的语法
(1)对元素个数的限定:使用控制符对元素能够在XML中出现的次数进行限定,如果不加控制符,则默认一次,如果元素在XML出现超出规定的次数,则XML不符合规范,会报错,使用工具Altova XMLSpy(http://www.altova.com/xmlspy.html)工具可以进行检测:
?-- 表示0次或者1次
* -- 表示0次或者多次
+ -- 表示1次或者多次
(2)元素的顺序。元素的顺序要严格按照DTD中定义的顺序,不能任意编写。比如user.xml,不能将<id></id>放在子元素<name></name>的后面。
(3)定义的顺序。DTD中,先定义根元素,越接近根元素的要先定义,对于一个元素来说,有属性的话先定义属性,再定义一个元素的的其他子元素。对于XML中的元素属性和子元素,何时使用子元素或属性没有严格的规则可循,通常要看哪一种更适合自己应用的需要。随着经验的增长就会有一种感觉,知道在何时使用属性比子元素更简单,反之亦然。一个好的经验规则是数据本身应当存储在元素中,而有关数据的信息(元数据)应当存储在属性中。不知道怎么做时,就把信息放在元素中。
XML文档可以很好的和一个对象相对应,一个对象可以转化为一个XML结构的文本,使用XML与其他系统进行交互。
百度百科中关于DTD说明如下:
DTD(Document Type Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。DTD文件是一个ASCII文本文件,后缀名为.dtd。
文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
简而言之,DTD就是一套规范XML的语法规则,XML中能有什么元素,元素之间的顺序等都是由DTD规范定义。
二、DTD定义
DTD可以在XML中直接定义,也可以通过外部引入,一般是使用外部引入,将DTD与XML分离
(1)XML中,使用如下方式包含:
<?xml version="1.0"?>
<!DOCTYPE users [
<!ELEMENT user (id,name,password)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>
]>
<users>
<user>
<id>001</id>
<name>john</name>
<password>123456</password>
</user>
</users>
(2)外部引入如下:
user.dtd文件:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT users (user+)>
<!ELEMENT user (id,name,password)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT password (#PCDATA)>
user.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE users SYSTEM "user.dtd">
<users>
<user>
<id>001</id>
<name>john</name>
<password>123456</password>
</user>
</users>
引入可以使用SYSTEM和public,如果自己项目内部的DTD,就使用SYSTEM,如果外部的,使用public。
三、一些初步的语法
(1)对元素个数的限定:使用控制符对元素能够在XML中出现的次数进行限定,如果不加控制符,则默认一次,如果元素在XML出现超出规定的次数,则XML不符合规范,会报错,使用工具Altova XMLSpy(http://www.altova.com/xmlspy.html)工具可以进行检测:
?-- 表示0次或者1次
* -- 表示0次或者多次
+ -- 表示1次或者多次
(2)元素的顺序。元素的顺序要严格按照DTD中定义的顺序,不能任意编写。比如user.xml,不能将<id></id>放在子元素<name></name>的后面。
(3)定义的顺序。DTD中,先定义根元素,越接近根元素的要先定义,对于一个元素来说,有属性的话先定义属性,再定义一个元素的的其他子元素。对于XML中的元素属性和子元素,何时使用子元素或属性没有严格的规则可循,通常要看哪一种更适合自己应用的需要。随着经验的增长就会有一种感觉,知道在何时使用属性比子元素更简单,反之亦然。一个好的经验规则是数据本身应当存储在元素中,而有关数据的信息(元数据)应当存储在属性中。不知道怎么做时,就把信息放在元素中。
XML文档可以很好的和一个对象相对应,一个对象可以转化为一个XML结构的文本,使用XML与其他系统进行交互。