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