DTD文档可以单独一个文件,也可以在xml文档内部内部声明
内部声明例子:
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
引用DTD约束:
两种方式,如下:
文件在本地时:
<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL"> <!DOCTYPE 书架 SYSTEM "book.dtd">
引用公共文件时:
<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
元素定义:
<! ELEMENT 元素名称 元素类型>
元素类型可以使元素内容或类型
如为元素内容,需要用()括起来,如:
<!ELEMENT 书架(书名,作者,售价)> <!ELEMENT 书名(#PCDATA)>
如为元素类型,直接书写,有如下几种类型:
EMPTY
ANY
元素内容中如何描述组成关系:
逗号分隔,表示内容出现的顺序必须与生命时一致,例如:
<!ELEMENT file(title,author,email)>
用“|”分隔,表示任选其一,例如:
<!ELEMENT file(title|author|email)>
在内容元素中可以使用+,*,?等表示元素出现的次数:
+:表示最少出现一次 (书+)
*:任何次数 (书*)
?:0或1次 (书?)
必须一次 (书)
使用圆括号批量设置:
<!ELEMENT file((title?,author*,email)*|comment>
属性定义:
语法格式:
<!ATTLIST 元素名 属性名1 属性值类型 设置说明 属性名2 属性值类型 设置说明 ... >
例子如下:
<!ATTLIST 商品 类别 CDATA #REQUIRED 颜色 CDATA #IMPLIED >
设置说明有如下几种:
#REQUIRED: 必须设置该属性
#IMPLIED: 可选
#FIXED: 固定值,需要定义属性时提供,不可再xml中设置
直接使用默认值: 在xml中可设置也可不设置,不设置使用默认值
例子如下:
<!ATTLIST 页面作者 姓名 CDATA #IMPLIED 年龄 CDATA #IMPLIED 联系信息 CDATA #REQUIRED 网站职务 CDATA #FIXED "页面作者" 个人爱好 CDATA “上网" >
常用的属性值类型:
CDATA:表示属性值为普通文本字符串
ENUMERATED
ID:表示属性的设置值为一个唯一值,值只能由字母、下划线开始,不能有空白字符
ENTITY
实体:
引用实体
主要在xml文档中被应用
语法格式:
<!ENTITY 实体名称 "实体内容">
引用方式:
&实体名称;
例子:
<!ENTITY bookname "javaweb"> ... &bookname;
参数实体
被DTD文件自身使用
语法格式:
<!ENTITY % 实体名称 "实体内容">
引用方式:
%实体名称;
例子:
<!ENTITY % TAG_NAME "name | email | address"> <!ELEMENT 个人信息 (%TAG_NAME;)>