DTD
XML 构建模块
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
语法
声明元素
语法
<!ELEMENT 元素名称 元素内容>
示例
说明 | 语法 | 示例 | 描述 |
---|
空元素 | <!ELEMENT 元素名称 EMPTY> | <!ELEMENT br EMPTY> | 空元素通过类别关键词EMPTY进行声明 |
只有 PCDATA 的元素 | <!ELEMENT 元素名称 (#PCDATA)> | <!ELEMENT book (#PCDATA)> | 只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明 |
带有任何内容的元素 | <!ELEMENT 元素名称 ANY> | <!ELEMENT book ANY> | 通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合 |
带有子元素(序列)的元素 | <!ELEMENT 元素名称 (元素[,元素,元素...])> | <!ELEMENT book (id,name,author)> | 带有一个或多个子元素的元素通过圆括号中的子元素名进行声明 |
声明属性
语法
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
示例
属性类型的选项
类型 | 描述 |
---|
CDATA | 值为字符数据 (character data) |
ID | 值为唯一的 id |
IDREF | 值为另外一个元素的 id |
IDREFS | 值为其他 id 的列表 |
NMTOKEN | 值为合法的 XML 名称 |
NMTOKENS | 值为合法的 XML 名称的列表 |
ENTITY | 值是一个实体 |
ENTITIES | 值是一个实体列表 |
NOTATION | 此值是符号的名称 |
xml: | 值是一个预定义的 XML 值 |
默认值参数的选项
值 | 解释 |
---|
#REQUIRED | 属性值是必需的 |
#IMPLIED | 属性不是必需的 |
#FIXED value | 属性值是固定的 |
值 | 属性的默认值 |
数量词
用于描述元素出现次数
符号 | 描述 |
---|
+ | 至少出现一次 |
? | 出现0次或1次 |
* | 出现任意次数 |
示例
引用方式
内部的DOCTYPE声明
语法
<!DOCTYPE 根元素 [元素声明]>
示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book[
<!ELEMENT book (id,name,author)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
]>
<book>
<id>2</id>
<name>《这是书名》</name>
<author>张三</author>
</book>
外部文档声明
语法
<!DOCTYPE 根元素 [元素声明]>
示例
<!ELEMENT book (id,name,author)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "book.dtd">
<book>
<id>1</id>
<name>《这是书名》</name>
<author>张三</author>
</book>
简要运用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books[
<!ELEMENT books (book)+>
<!ELEMENT book (id,name,author)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ATTLIST author type (man|woman) "man">
<!ATTLIST author age CDATA #REQUIRED>
]>
<books>
<book>
<id>1</id>
<name>《JAVA从入门到放弃》</name>
<author type="man" age="23">张三</author>
</book>
<book>
<id>2</id>
<name>《这是一本书》</name>
<author type="man" age="32">李四</author>
</book>
</books>
r type="man" age="23">张三</author>
</book>
<book>
<id>2</id>
<name>《这是一本书》</name>
<author type="man" age="32">李四</author>
</book>
</books>