J2EE之XML_DTD

本文详细介绍了XML和DTD的概念,XML的文档约束类型,以及XML的格式要求。重点阐述了如何使用DTD来定义元素和属性,并通过两个案例展示了DTD在实际XML文档中的应用,包括元素定义和属性定义的语法。案例涵盖了人员信息管理和Web应用程序配置的XML文档结构。
摘要由CSDN通过智能技术生成

目录

一、什么是DTD?

二、什么是XML?

三、XML的两种文档约束

四、XML格式要求(合法XML)

五、使用DTD

1、 在XML中加入DTD申明

2、元素定义语法(DTD对元素的限制)

3、 属性定义语法(DTD对属性的限制)

4、特殊符号转义

5、案例


一、什么是DTD?

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

二、什么是XML?

            XML称为(Extensible Markup Language),意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。

三、XML的两种文档约束

     (1)DTD约束:
       DTD文件的后缀名为 .dtd;DTD文件有自己独立的语法规范

     (2)Scheam约束
        Scheam文件的后缀名是 .xsd;Scheam 文件符合XML语法规范

四、XML格式要求(合法XML)

    1)有且只有一个根节点;
    2)由开始标签和结束标签组成;
    3)XML标签区分大小写;
    4)正确嵌套标签;
  

五、使用DTD

1、 在XML中加入DTD申明

    1)内部申明:<! DOCTYPE root[]>
    2)外部申明:<!DOCTYPE 文档根节点 SYSTEM “DTD文件名”>

2、元素定义语法(DTD对元素的限制)

        基本语法:<! ELEMENT 元素名称 元素类型 >

        元素分类:EMPTY     空元素
                         (#PCDATA)  文本元素
                         (e1,e2)    混合元素

      元素限制:,(顺序)、|(或,多选一)、?(0或1次),*(1*0=0,0次或多次), +(1+0=1,1次或多次)

3、 属性定义语法(DTD对属性的限制)

    基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
    属性类型:ID/CDATA/ENUM (男|女)

    设置说明:#REQUIRED(必须)/#IMPLIED(可选)

4、特殊符号转义

 

5、案例

(1)案例一:

<?xml version="1.0" encoding="UTF-8"?>
<!--
       利用 DTD 内部申明 
 -->
<!DOCTYPE persons[
<!--  * 代表0次或无数次-->
<!ELEMENT persons (person*)>
<!--  
     (e1,e2):混合元素 
      ,代表  顺序
                 ?代表  0次或1次          
-->
<!ELEMENT person (name,age,contact,br?)>
<!--(#PCDATA):文本元素-->
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!-- |代表 多选一 -->
<!ELEMENT contact (phone|mail)>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!-- EMPTY 代表   空元素 -->
<!ELEMENT br EMPTY>
<!--  
            属性定义语法(DTD对属性的限制)
	基本语法:<!ATTLIST 元素名称 属性名称 属性类型 设置说明>
	属性类型:ID(不能以/或数字开头)/CDATA(文本)/ENUM (男|女)【多选一】
	设置说明:#REQUIRED(必须)/#IMPLIED(可选)
-->
<!ATTLIST person 
	pid ID #REQUIRED
	paddr CDATA #IMPLIED
	psex (男|女) "男" 
>
]>
<!-- 
    1)有且只有一个根节点;
    2)由开始标签和结束标签组成;
    3)XML标签区分大小写;
    4)正确嵌套标签;
 -->
<persons>
	<person pid="p01" paddr="123" psex="男">
		<name>张三</name>
		<age>22</age>
		<contact>
			<phone>15882821111</phone>
		</contact>
		<br/>
	</person>
	<person pid="p02">
		<name>李四</name>
		<age>23</age>
		<contact>
			<mail>123@qq.com</mail>
		</contact>
	</person>
</persons>

(2)案例二:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 利用 DTD 内部申明 -->
<!DOCTYPE web-app [
    <!--  * 代表0次或无数次-->
	<!ELEMENT web-app (servlet*,servlet-mapping*)>
	<!--  
     (e1,e2):混合元素 
      ,代表  顺序
                 ?代表  0次或1次          
    -->
	<!ELEMENT servlet (servlet-name?,servlet-class?)>
	<!ELEMENT servlet-mapping (servlet-name?,url-pattern)>
	<!--(#PCDATA):文本元素-->
	<!ELEMENT servlet-name (#PCDATA)>
	<!ELEMENT servlet-class (#PCDATA)>
	<!ELEMENT url-pattern (#PCDATA)>
]>
<web-app>
	<servlet>
		<servlet-name></servlet-name>
		<servlet-class></servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name></servlet-name>
		<url-pattern></url-pattern>
	</servlet-mapping>
</web-app>


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ning_ning_03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值