DTD简单应用

一、什么是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与其他系统进行交互。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值