快速入门dtd

DTD文件约束以及使用

今天我们来学习一下dtd的使用以及约束。
我们来说一下什么是有效的xml文档?
内容结构严谨遵守自身标记,能通过自身的语法检查,通过dtd验证的xml文档称为有效的xml文档。
DTD
Schema
两者都可以用来约束xml文档,Schema 比dtd强大同时难度也比dtd高一点,我们只要学习好dtd然后去看Schema 是轻轻松松的。

什么是格式良好的xml?

(1)有且只有一个根元素
(2)XML标签大小写正确区分
(3)正确使用结束标签
(4)正确嵌套标签
(5)使用了合法的标签名(A-Za-z0-9-_)
(6)定义有效的属性

1.声明dtd

格式: <!DOCTYPE 根元素名[]>

2.元素定义的语法

语法格式<!ELEMENT 元素名称 元素约束>
元素类型解释
<!ELEMENT element-name EMPTY>空元素
<!ELEMENT element-name (#PCDATA)>文本元素
<!ELEMENT element-name (e1,e2...)>混合元素

3.元素的限制

元素解释
,顺序
+1~(次)
*0~n(次)
?0或1
(如果没有)(默认是一次)

4.属性定义的语法

格式:  <!ATTLIST 元素名 属性名 属性类型/>
语法解释
ID唯一非空 ,类似于数据库中的主键
(男|女) “男”举枚,默认男的意思
CDATA纯文本
IDREF属性值引用已定义的ID值(相当于主键引用外键)
#REQUIRED必须 <!ATTLIST 元素名 属性名 属性类型 #REQUIRED/>
#IMPLIED非必须 <!ATTLIST 元素名 属性名 属性类型 #IMPLIED/>

5.XML中的特殊符号

符号解释
& amp;&(逻辑与)
& lt;<(小于)
& gt;>(大于)
& quot;"(双引号)
& apos;'(单引号)

注:
&:在xml里面是一个特殊字符:用来取变量的开始
;:在xml里面是一个特殊字符:用来取变量的结束
相当于:
amp=&
& amp;

6.外部dtd
dtd三种引入方式:
(1)引入外部的dtd文件
< !DOCTYPE 根元素名称 SYSTEM “dtd文件路径”>
(2)引入内部的dtd文件
< !DOCTYPE 根元素名称 [dtd代码]>
(3)使用外部的dtd文件(网络上的)
< !DOCTYPE 根元素名称 PUBLIC “DTD名称” “DTD文档的URL”>

话不多说上代码

2.1内部dtd

<?xml version="1.0" encoding="UTF-8"?>
<!-- 内部dtd -->
<!DOCTYPE persons [
<!ELEMENT persons (person*)>
 <!ELEMENT person (name,age,contact,br?)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT age (#PCDATA)>
 <!ELEMENT contact (phone|email)>

 <!ELEMENT phone (#PCDATA)>
 <!ELEMENT br EMPTY>
 <!ELEMENT email (#PCDATA)>
 
 <!ATTLIST person 
     pid ID #REQUIRED
     sex (|) "男" 
     qq CDATA #IMPLIED
     parent IDREF  #IMPLIED
   >
]>
<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>张大明</name>
		<age>35</age>
		<contact>
			<email>@qq.com</email>
		</contact>
	</person>
</persons>

2.2引用外部dtd

<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部dtd -->
<!DOCTYPE persons SYSTEM "demo4.dtd">
<persons>
	<person pid="p1" sex="男" qq="aaa" parent="p2">
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>张大明</name>
		<age>35</age>
		<contact>
			<email>@qq.com</email>
		</contact>
	</person>
</persons>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值