码迷,mamicode.com
首页 > 其他好文 > 详细

DTD约束的方式

时间:2014-09-08 10:56:16      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:dtd


xml文件使用DOCTYPE声明语句来指明它所遵循的DTD文件,DOCTYPE
声明语句有两中形式:
当引用的文件在本地时:采用如下方式8:

1.<!DOCTYPE 根节点 SYSTEM "DTD文件的URL">
例如:<DOCTYPE 书架 SYSTEM "book.dtd">

2.当引用的文件是一个公共的文件时:采用如下的方式:
<!DOCTYPE 文档根节点 PUBLIC "DTD的名称" "DTD文件的URL">
例如:
<!DOCTYPE web-app PUBLIC "..." "...">
--------------------------------------------------------------------------------------------------

DTD约束语法细节:
元素定义:
在DTD文档中使用ELEMENT声明一个xml元素,语法格式如下所示:
<!ELEMENT 元素名称 元素类型>
元素类型可以是元素内容或类型
<!ELEMENT 书架 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>

如果元素类型,则直接书写,DTD规范定义了如下几种类型:
EMPTY:用于表示定义空元素,例如<br/> <hr/>
ANY:表示元素内容为任意类型
如果是元素内容可以使用如下方式,描述内容的组成关系
用逗号分隔,表示内容的出现顺序必须与声明是一致,
<ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)>
用|分隔,表示任选其一,即多个只能出现一个
<!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)>
在元素内容中出现也可以使用+,*?等符号表示元素出现的次数:
+:一次或多次(书+)
?:0次或一次(书+)
*:0次或多次(书*)
特殊(书)必须出现一次

也可以使用圆括号()批量设置例如:
<!ELEMENT MYFILE ((TITLE*,AUTHOR?,EMAIL))*|COMMENT>

----------------------------------------------------------------------------------------------
属性定义:

xml文件中的标签属性需通过ATTLIST为其设置属性

语法格式:
<!ATTLIST 元素名
属性名1 属性值类型 设置说明
属性名2 属性值类型 设置说明
>
属性声明举例:
<!ATTLIST 商品
类别 CDATA #REQUIRED
颜色 CDATA #IMPLIED
>
对应的xml文件
<商品 类别="服饰" 颜色="黄色">...</商品>
<商品 类别="服装">...</商品>
属性设置说明:
#REQUIRED:必须设置属性
#IMPLIED: 可以设置也可以不设置
#FIXED:说明该属性的取值固定位一个数,在xml文件中不能为该属性设置其他值但需要为该属性提供值
直接使用默认值:在xml中可以设置也可以不设置该属性值,若没有设置则使用默认值
举例:

<!ATTLIST 页面作者>
姓名 CDATA #IMPLIED
年龄 CDATA #IMPLIED
联系信息 CDATA #REQUIRED
网站职务 CDATA #FIXED "页面作者"
个人爱好 CDATA "上网"
>
--------------------------------------------------------------------------------------------------------------
常用属性值类型

CDATA :表示属性值为普通文本字符串
ENUMERATED:
属性的类型可以是一组取值的列表,在xml文件中设置的属性值只能是这个列表中的某值枚举(
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE 购物篮[
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 品种(鸡肉|牛肉|猪肉|龟肉) "鸡肉">
]>
<购物篮>
<肉 品种 "龟肉"/>
<肉 品种 "牛肉"/>
<肉/>
</购物篮>


ID
表示属性的设置值为一个唯一值
ID属性的值只能有字母,下划线开始,不能出现空白字符,必须以字母开头

ENTITY
1.实体用于为一段内容创建一个别名,以后往xml文档中
就可以使用别名引用这段内容了
2.在DTD定义中,一条<!ENTITY...>语句用于定义一个实体
3.实体可以分为两种类型:引用类型和参数实体
---------------------------------------------------------------------------------------------------
实体定义:
1.引用实体:
引用实体主要在xml文档中被应用
语法格式:
<!ENTITY 实体名称 "实体内容">
直接转变实体内容

引用方式:
&实体名称
举例:
<!ENTITY copyright "i am a programmer">
...
&copyright;
2.参数实体:
参数实体被DTD文件自身使用
语法格式:
<!ENTITY % 实体名称 "实体内容">
引用方式:
%实体名称
举例1:
<!ENTITY % TAG_NAMES "姓名|EMAIL|电话|地址">

<!ELEMENT 个人信息 (%TAG_NAMES;)|生日>
<!ELEMENT 客户信息 (%TAG_NAMES;)|公司名>
举例2:

<!ENTITY % common,attributes
"id ID #IMPLIED">
account CDATA #REQUIRED
>
...
<!ATTLIST purchaseOrder %common.attributes;>
<!ATTLIST item %common.attributes;>
---------------------------------------------------------------------------------------------



DTD约束的方式

标签:dtd

原文地址:http://blog.csdn.net/hephec/article/details/39134615

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!