您的位置:首页 > 其它

XML中的DTD约束

2017-06-10 11:11 176 查看



1.1 DTD的入门案例

1.1.1 为什么要有约束 (DTD)?

XML都是用户自定义的标签,若出现小小的错误,软件程序将不能正确地获取文件中的内容而报错。(如:Tomcat)

XML技术中,可以编写一个文档来约束一个XML的书写规范,这个文档称之为约束

1.1.2 如何使用DTD约束文件?

1. 编写DTD文件

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

<!ELEMENT 书架(书+)>

<!ELEMENT 书 (书名,作者,售价)>

<!ELEMENT 书名 (#PCDATA)>

<!ELEMENT 作者 (#PCDATA)>

<!ELEMENT 售价 (#PCDATA)>





2. 在xml文件中引入DTD文件

<!DOCTYPE 书架 SYSTEM "book.dtd">

引入了写好的DTD文件后, 格式就必须跟DTD文件保持一致





1.2 DTD的细节

1.2.1 语法细节

在DTD文档中使用ELEMENT关键字来声明一个XML元素。

• 语法:<!ELEMENT
元素名称 使用规则>


使用规则:

• (#PCDATA):指示元素的主体内容只能是普通的文本.(Parsed Character Data)

• EMPTY:用于指示元素的主体为空。比如<br/>

• ANY:用于指示元素的主体内容为任意类型。

• (子元素):指示元素中包含的子元素

• 定义子元素及描述它们的关系:

– 如果子元素用逗号分开,说明必须按照声明顺序去编写XML文档。

• 如: <!ELEMENT FILE (TITLE,AUTHOR,EMAIL)

– 如果子元素用"|"分开,说明任选其一。

• 如:<!ELEMENT FILE (TITLE|AUTHOR|EMAIL)

– 用+、*、?来表示元素出现的次数

• 如果元素后面没有+*?:表示必须且只能出现一次

• +:表示至少出现一次,一次或多次

• *:表示可有可无,零次、一次或多次

• ?:表示可以有也可以无,有的话只能有一次。零次或一次

 

1.2.2 定义属性

• 在DTD文档中使用ATTLIST关键字来为一个元素声明属性。

• 语法:

<!ATTLIST 元素名

属性名1
属性值类型 设置说明


属性名2
属性值类型 设置说明




>

• 属性值类型:

– CDATA:表示属性的取值为普通的文本字符串

– ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)

– ID:表示属性的取值不能重复

• 设置说明

– #REQUIRED:表示该属性必须出现

– #IMPLIED:表示该属性可有可无

– #FIXED:表示属性的取值为一个固定值。语法:#FIXED "固定值"

直接值:表示属性的取值为该默认值

1.2.3 实例代码1

<!ATTLIST
商品


类别 CDATA #REQUIRED

颜色 CDATA #IMPLIED

>

<?xml version = "1.0" encoding="GB2312" standalone="yes"?>

<商品
类别="服装"颜色="黄色"
/>


1.2.4 实例代码2

<?xml version = "1.0" encoding="GB2312" standalone="yes"?>

<!DOCTYPE
购物篮 [


   <!ELEMENT
购物篮 (肉+)>


<!ELEMENT
肉 EMPTY>


<!ATTLIST
肉 品种 (
鸡肉 |
牛肉 |
猪肉 |
鱼肉 ) "鸡肉">


]>


<购物篮>

<肉 品种="鱼肉"/>

<肉 品种="牛肉"/>

<肉/>

</购物篮>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: