DTD(文档类型定义)
每一个 XML 文件均可携带一个有关其自身格式的描述。
可一致地使用某个标准的 DTD 来交换数据。
struts.xml,hibernate.xml,ibatis.xml等apache组织下的用DTD描述限制xml文件
文档构建模块
所有的 XML,HTML 文档均由以下简单的构建模块构成:
元素
属性
实体 :专业字符
PCDATA :被解析的字符数据(parsed character data)。
CDATA :不被解析的字符数据(character data)。像文本值一样,不会被解析<![CDATA["..."]]>。
DTD - 元素
声明元素的语法:
<!ELEMENT 元素名称 类别> 或 <!ELEMENT 元素名称 (元素内容)>
<!ELEMENT note (to,from,heading,body)> //带有子元素(序列)的元素<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
<!ELEMENT to (#PCDATA)> //只有 PCDATA 的元素
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
DTD - 属性
声明属性使用下列语法:
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
DTD:
<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">
合法的 XML:
<square width="100" />
//"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。
DTD - 实体---(类似静态变量,可以直接用的固定值)
声明实体的语法:
<!ENTITY 实体名称 "实体的值">
DTD :
<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
XML 例子:
<author>&writer;©right;</author>
注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。
DTD例子:struts2的http://struts.apache.org/dtds/struts-2.0.dtd
<!ELEMENT struts (package|include|bean|constant)*> //声明可以出现*次子元素的元素
<!ELEMENT bean (#PCDATA)> //声明只有 PCDATA 的元素
<!ATTLIST bean
type CDATA #IMPLIED //CDATA 值为字符数据 (character data) #IMPLIED可选的
name CDATA #IMPLIED
class CDATA #REQUIRED
scope CDATA #IMPLIED
static CDATA #IMPLIED
optional CDATA #IMPLIED
>
DOCTYPE 声明
内部的 DOCTYPE 声明
<!DOCTYPE 根元素 [元素声明]>
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>
外部文档声明
<!DOCTYPE 根元素 SYSTEM "文件名"> //SYSTEM PUBLIC
XML例子:
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">