XML约束之DTD约束详解

1、DTD介绍

     DTD(Document Type Definition),文档类型定义,用来约束XML文档。规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

2、DTD重点要求

     开发中,我们很少自己编写DTD约束文档,通常情况我们都是通过框架提供的DTD约束文档,编写对应的XML文档。常见框架使用DTD约束有:struts2、hibernate等。

     通过提供的DTD"web-app_2_3.dtd"编写XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
	模拟servlet2.3规范,如果开发人员需要在xml使用当前DTD约束,必须包括DOCTYPE。
	格式如下:
	<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
-->
<!ELEMENT web-app (servlet*,servlet-mapping* , welcome-file-list?) >
<!ELEMENT servlet (servlet-name,description?,(servlet-class|jsp-file))>
<!ELEMENT servlet-mapping (servlet-name,url-pattern+) >
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>

<!ELEMENT welcome-file-list (welcome-file+)>
<!ELEMENT welcome-file (#PCDATA)>

<!ATTLIST web-app version CDATA #IMPLIED>

3、案例实现

     步骤1:创建web.xml文档,并将“web-app_2_3.dtd”拷贝到相同目录下

     步骤2:从DTD文档开始处,拷贝需要的“文档声明”<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">到xml文档中。

     步骤3:完成xml内容编写

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app version="2.3">
    <servlet>
	<servlet-name></servlet-name>
	<servlet-class></servlet-class>
    </servlet>
    <servlet-mapping>
	<servlet-name></servlet-name>
	<url-pattern></url-pattern>
    </servlet-mapping>
    <welcome-file-list>
	<welcome-file></welcome-file>
        <welcome-file></welcome-file>
        <welcome-file></welcome-file>
    </welcome-file-list>
</web-app>

4、DTD语法

     4.1、文档说明

             4.1.1、内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE web-app [
    ...//具体的语法
]>
<web-app >
    
</web-app>

             4.1.2、外部DTD-本地DTD,DTD文档在本地系统上,公司内部自己项目使用。

<?xml version="1.0" encoding="UTF-8" atandalone="no" ?>
<!DOCTYPE web-app SYSTEM "web-app_2_3.dtd">
<web-app >
    
</web-app>

            4.1.3、外部DTD-公共DTD,DTD文档在网络上,一般都有框架提供

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app >
    
</web-app>

     4.2、元素声明
             

定义元素语法:<!ELEMENT 元素名 元素描述>

    元素名:自定义

    元素描述包括:符号和数据类型

        常见符号: ? *   +  ()   |   ,

        常见类型:#PCDATA 表示文本内容时文本,不能是子标签

     4.3、属性声明

属性的语法:(attribute)
    <!ATTLIST 元素名
        属性名 属性类型 约束
        属性名 属性类型 约束
        ...
    >
    
    元素名:属性必须是给元素添加,所有必须先确定元素名

    属性名:自定义

    属性类型: ID、CDATA、枚举...

        ID : ID类型的属性用来标识元素的唯一性 

        CDATA : 文本类型

        枚举 : (e1 | e2 | ...)多选一

    约束:
        #REQUIERED :说明属性是必须的:required
        #IMPLIED :说明属性是可选的:implied

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值