XML的约束——DTD

1.什么是DTD? 

文档类型定义(约束)

2.什么是XML?

HTML:超文本标记语言   a/b/c/z
XML:可扩展标记语言  

3.XML的两种文档约束

DTD
Schema

4.XML格式要求(合法XML)

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

5.使用DTD

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

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

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

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

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

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

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

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

person.xml

 person.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 1)Dtd 
2)内部声明<!DOCTYPE 根标签[]> 
3)外部声明<!DOCTYPE 根节点 SYSTEM "DTD外部文件路径"> 
2.元素定义 
1)语法:<!ELEMENT 元素名称元素类型>
2)类型 
2.1)空元素:EMPTY 
2.2)文本元素:(#PCDATE) 
2.3)混合元素:(e1,e2,e3,e4,...) 
3)设置说明: 
3.1)必须:#REQUIRED required 
3.2)#IMPLIED 
4)特殊字符转义
-->
 <!DOCTYPE Persons[
 	<!ELEMENT persons (person+)>
 	<!ELEMENT person (name,age,contact,br?)>
 	<!ELEMENT name (#PCDATE)>
 	<!ELEMENT age (#PCDATE)>
 	<!ELEMENT contact (phone|mail)>
 	<!ELEMENT phone (#PCDATE)>
 	<!ELEMENT mail (#PCDATE)>
 	<!ELEMENT br EMPTY>
 	<!ATTLIST person 
              pid ID #REQUIRED
              paddr CDATE #IMPLIED
              psxe (男|女|妖)"男" 
    >
 ]>

<persons>
	<person pid="p01" paddr="123" psxe="男">
		<name>张三</name>
		<age>22</age>
		<contact>
			<phone>select * from t_book where price &gt; 200 and price&lt;300</phone>
		</contact>
		<br />
	</person>
	<person pid="p02">
		<name>李四</name>
		<age>23</age>
		<contact>
			<mail>123@qq.com</mail>
		</contact>
	</person>
</persons>

3)外部声明<!DOCTYPE 根节点 SYSTEM "DTD外部文件路径">

 person1.xml

<?xml version="1.0" encoding="UTF-8"?>

 <!DOCTYPE Persons[
 	<!ELEMENT persons (person+)>
 	<!ELEMENT person (name,age,contact,br?)>
 	<!ELEMENT name (#PCDATE)>
 	<!ELEMENT age (#PCDATE)>
 	<!ELEMENT contact (phone|mail)>
 	<!ELEMENT phone (#PCDATE)>
 	<!ELEMENT mail (#PCDATE)>
 	<!ELEMENT br EMPTY>
 	<!ATTLIST person 
              pid ID #REQUIRED
              paddr CDATE #IMPLIED
              psxe (男|女|妖)"男" 
    >
 ]>
 <!DOCTYPE persons SYSTEM "text.xml"/>
<persons>
	<person pid="p01" paddr="123" psxe="男">
		<name>张三</name>
		<age>22</age>
		<contact>
			<phone>select * from t_book where price &gt; 200 and price&lt;300</phone>
		</contact>
		<br />
	</person>
	<person pid="p02">
		<name>李四</name>
		<age>23</age>
		<contact>
			<mail>123@qq.com</mail>
		</contact>
	</person>
</persons>

text.xml

<?xml version="1.0" encoding="UTF-8"?>
	<!ELEMENT persons (person+)>
 	<!ELEMENT person (name,age,contact,br?)>
 	<!ELEMENT name (#PCDATE)>
 	<!ELEMENT age (#PCDATE)>
 	<!ELEMENT contact (phone|mail)>
 	<!ELEMENT phone (#PCDATE)>
 	<!ELEMENT mail (#PCDATE)>
 	<!ELEMENT br EMPTY>
 	<!ATTLIST person 
              pid ID #REQUIRED
              paddr CDATE #IMPLIED
              psxe (男|女|妖)"男" 
    >

   5.4 特殊符号转义 

    &(逻辑与)      -->  &amp;
    >(大于)     -->  &gt;
    <(小于)     -->  &lt;
    ‘(单引号)     -->  &apos;
    “(双引号)     -->  &quot;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值