DTD(Document Type Definition)全名是文档类型定义,用来为XML文档定义语义约束,比较简单,但是由于其支持的数据类型有限,无法对元素或属性的内容进行详细规范,在可读性和可扩展性方面也比不上XML Schema
一,DTD引入方式
1,内部DTD
即DTD和XML格式的数据放在同一份文档中,其格式为:
<!DOCTYPE 根元素名 [
元素描述
]>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!ELEMENT book (name , price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
]>
<book>
<name>test</name>
<price>10</price>
</book>
2,外部DTD
其格式为:<!DOCTYPE 根元素名称 SYSTEM "外部DTD的URI">,示例如下:
book.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "book.dtd">
<book>
<name>test</name>
<price>10</price>
</book>
book.dtd:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT book (name , price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
3,公用DTD
其格式为:<!DOCTYPE 根元素名称 PUBLIC "DTD标识名" "公用DTD的URI">,下面的示例取自Spring的配置文件:
<?xml version="1.0"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
......
二,定义元素
其格式为:<!ELEMENT 元素名 元素类型描述>
元素类型描述主要包含以下5种:
1,任意类型
元素的内容可以是字符串,也可以包含其它子元素,也可以是空元素,其格式为:<!ELEMENT 元素名 ANY>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book [
<!ELEM