DTD简单介绍

1、DTD

作用:

验证XML

声明方式:

DTD可以声明在XML内部,也可以声明在XML外部

1.声明在内部,通过如下语法包含一个内部校验的DTD
<!DOCTYPE 根节点 [节点的声明]>
2.引入外部DTD
<!DOCTYPE 根节点 SYSTEM "外部DTD地址">

为何使用DTD:

  • 通过 DTD,可以为每一个 XML 文件均可携带一个有关其自身格式的描述。
  • 通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
  • 应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
  • 可以使用 DTD 来验证自身的数据。

DTD语法

元素:

声明元素

<!ELEMENT 元素名称 类型>或<!ELEMENT 元素名称 (元素内容)>

声明一个空元素

<!ELEMENT br EMPTY>

在XML中使用 <br />

只有PCDATA的元素

<!ELEMENT name (#PCDATA)>

带有任何内容的元素

<!ELEMENT name ANY>

带有子元素(序列的元素)

<!ELEMENT user (name,sex,age)>

当子元素按照由逗号隔开的序列进行声明时,这些子元素必须按照相同顺序出现在文档中,在一个完整的声明中,子元素也必须被声明,同时子元素也可以拥有子元素

声明只出现一次的元素

<!ELEMENT users (user)>

声明可以出现多次 * 0-N + 1-N ? 0-1

<!ELEMENT users (user*)>

声明或者元素 birthday与age任意出现一个

<!ELEMENT user (name,sex,(birthday|age))>

声明混合内容

<!ELEMENT birthday (#PCDATA|year|month|day)*>
属性:

在 DTD 中,属性通过 ATTLIST 声明来进行声明

<!ATTLIST element-name attribute-name attribute-type attribute-value>
<!ATTLIST user des CDATA "用户信息">

CDATA 值为字符数据 (character data)
(en1|en2|…) 此值是枚举列表中的一个值
ID 值为唯一的id
IDREF 值为另一个元素的id
IDREFS 值为其他id的列表
NMTOKEN 值为合法的XML名称
NMTOKENS 值为合法的XML名称列表
ENTITY 值是一个实体
ENTITIES值是一个实体列表

NOTATION 值是符号的名称
xml:值是一个预定义的XML值

属性的默认值有:
#REQUIRED 属性是必须的
#IMPLIED 属性不是必须的
#FIXED value 属性的值是固定的


<!ATTLIST user des CDATA #REQUIRED>
<!ATTLIST user des CDATA #IMPLIED>
<!ATTLIST user des CDATA #FIXED  "描述信息">
<!ATTLIST user des (描述|说明)  #REQUIRED>
<!ATTLIST user des ID #IMPLIED >ID的值只能是字母或者下划线开始
<!ATTLIST user num IDREF #IMPLIED >

取值为文档中已经存在的一个ID的取值,比如一个文档有教师,有学生,教师有ID,学生可以有一个教师的属性,志向教师的ID

<!ELEMENT Team EMPTY> <!ATTLIST Team num IDREFS #IMPLIED >

<Team num=“a0001-02 a0001-01”/>XML中的取值是存在的ID值,多个值之间以空格隔开

<!ATTLIST user nikName NMTOKEN #IMPLIED >字母数字下划线句号冒号破折号 <!ATTLIST user nikName NMTOKENS #IMPLIED >

<user des=“a0001-01” nikName=“xxsd as ter”>多个名称以空格隔开

代码示例:

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

<!DOCTYPE users[
<!ELEMENT users (user)+>
  <!ELEMENT  user (id,name,age,sex)>
  <!ELEMENT  id (#PCDATA)>
  <!ELEMENT  name (#PCDATA)>
  <!ELEMENT  age (#PCDATA)>
  <!ELEMENT sex (#PCDATA)>
  
  <!ATTLIST user type CDATA "null">
]> 
<users>
	<user type = "user">
		<id>1</id>
		<name>张三</name>
		<age><![CDATA[age  > 18]]></age>
		<sex>男</sex>
	</user>
	<user type = "user">
		<id>1</id>
		<name>张三</name>
		<age><![CDATA[age  > 18]]></age>
		<sex>男</sex>
	</user>
	<user type = "user">
		<id>1</id>
		<name>张三</name>
		<age><![CDATA[age  > 18]]></age>
		<sex>男</sex>
	</user>
</users>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值