文档类型定义(DTD)是用来定义XML文档结构的,它可以在文档内部声明也可以在外部引用。
声明内部的DOCTYPE:
<!DOCTYPE 根元素 [元素声明]>
PCDATA表示被解析的字符数据,会被解析器解析的文本。CDATA表示字符数据,不会被解析器解析的文本。
声明元素:
<!ELEMENT 元素名称 (元素内容)>
数量词:+表示一次或多次;?表示一次或零次;*表示任意次。
声明属性:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
默认值:#REQUIRED表示属性值是必须的;#IMPLIED表示默认值不是必须的;#FIXED value表示默认值是固定的。
内部引用DTD:
<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明内部DTD -->
<!DOCTYPE persons [
<!ELEMENT persons (person*)>
<!ATTLIST person id CDATA #REQUIRED>
<!ELEMENT person (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
<persons>
<person id="1.0">
<name>张三</name>
<age>13</age>
<sex>男</sex>
</person>
<person id="2.0">
<name>李四</name>
<age>14</age>
<sex>女</sex>
</person>
</persons>
外部引用:创建DTD文件,使用外部链接声明链接外部DTD。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 声明外部DTD -->
<!DOCTYPE persons SYSTEM "D.dtd">
<persons>
<person id="1.0">
<name>张三</name>
<age>13</age>
<sex>男</sex>
</person>
<person id="2.0">
<name>李四</name>
<age>14</age>
<sex>女</sex>
</person>
</persons>
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT persons (person*)>
<!ATTLIST person id CDATA #REQUIRED>
<!ELEMENT person (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>