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;)>