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">
...
©right;
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;>
---------------------------------------------------------------------------------------------