xml文件DTD约束

DTD 约束可以作为一个单独的文件编写,也可以在xml文件内编写

(xml与DTD是严格区分大小写的)

DTD可以定义和约束对应的xml标签和属性

标签的定义:

<!DOCTYPE 根元素 [

具体内容

]>

如:

<?xml version="1.0" encoding="UTF-8"?>
<!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>
]>
<persons>
	<person>
		<name>张小明</name>
		<age>10</age>
		<contact>
			<phone>1234567</phone>
			<email>123@qq.com</email>
		</contact>
		<br/>
	</person>
	<person>
		<name>张大明</name>
		<age>35</age>
		<contact>
			<phone>1234567</phone>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>

属性的定义:

<!DOCTYPE 根元素 [

        <!ATTLIST 对应的元素
                具体内容
        >

]>

如:

<?xml version="1.0" encoding="UTF-8"?>
<!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>
	<!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>
			<email>123@qq.com</email>
		</contact>
		<br/>
	</person>
	<person pid="p2">
		<name>张大明</name>
		<age>35</age>
		<contact>
			<phone>1234567</phone>
			<email>123@qq.com</email>
		</contact>
	</person>
</persons>

<!!注意!!>

元素定义:

?:表示该对象可以出现,但只能出现一次

*  : 表示该对象允许出现任意次数,也可以是零次

+ : 表示该对象最少出现一次,可以出现多次

() : 用来给元素分组

|   :表明在列出的对象中选择一个

,  : 表示对象必须按指定的顺序出现

元素内容的类型:

#PCDATA:表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素(不能嵌套标签)

EMPTY: 如果一个元素的CONTENT被声明为EMPTY的话,表示该元素不能包含任何子元素和文本,只可以使用属性

ANY: 表示该元素中可以包含任何在DTD中定义的元素

属性类型及含义:

(ATTLIST:ATT是attribute的缩写,LIST是集合的意思)

CDATA : 值为字符数据

ID : 值为唯一的id

IDREF : 值为另外一个元素的id

IDREFS : 值为其他id的列表

NMTOKEN : 值为合法的xml名称

NMTOKENS : 值为合法的xml名称的列表

ENTITY :值是一个实体

ENTITIES : 值是一个实体的列表

NOTATION : 此值是符号的名称

xml:   : 值是一个预定义的xml值

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值