XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XML 和 DTD

语法正确的XML文档称为格式良好。

根据DTD验证的XML文档是格式良好和有效的。


什么是DTD?

DTD代表文档类型定义。

DTD定义XML文档的结构、合法元素和属性。


有效的XML文档

有效的XML文档是格式良好的,并且符合DTD的规则:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

上面的DOCTYPE声明包含对DTD文件的引用。下面显示并解释DTD文件的内容。


XML DTD

DTD的目的是定义XML文档的结构、法律元素和属性:

Note.dtd:

<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

上述DTD的解释如下:

  • !DOCTYPE note -  定义文档的根元素是note
  • !ELEMENT note - 定义note元素必须包含元素:"to,from,heading,body"
  • !ELEMENT to - 定义类型为的to元素 "#PCDATA"
  • !ELEMENT from - 将from元素定义为 "#PCDATA"
  • !ELEMENT heading  - 定义标题元素的类型 "#PCDATA"
  • !ELEMENT body - 定义类型为的主体元素 "#PCDATA"

提示: #PCDATA 表示可解析的字符数据。



使用DTD进行实体声明

DOCTYPE声明还可用于定义文档中使用的特殊字符或字符串:

实例

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note [
<!ENTITY nbsp "&#xA0;">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: W3Schools.">
]>

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer;&nbsp;&copyright;</footer>
</note>
尝试一下 »

提示: 实体有三个部分:以符号(&)开头,然后是实体名称,最后是分号 (;)


何时使用DTD?

有了DTD,独立的人群可以同意使用标准DTD交换数据。

使用DTD,您可以验证从外部世界接收的数据是否有效。

您还可以使用DTD来验证您自己的数据。

如果你想学习DTD,请阅读我们的 DTD教程


何时不使用DTD?

XML不需要DTD。

当您尝试使用XML时,或者当您使用小型XML文件时,创建DTD可能是浪费时间。

如果开发应用程序,请等到规范稳定后再添加DTD。否则,您的软件可能会因为验证错误而停止工作。