文档类型定义(DTD,Document Type Definition)是XML文档的一个重要组成部分,它定义了XML文档的结构和规则。DTD允许创建者指定文档可以包含哪些元素、元素的顺序、元素的属性,以及元素之间的关系,从而确保XML文档的一致性和合法性。 在XML文档中,DTD可以以两种方式声明: 1. 内部的DOCTYPE声明:当DTD直接包含在XML文档内部时,它被包裹在一个DOCTYPE声明中,如: ```xml <!DOCTYPE 根元素 [元素声明]> ``` 例如: ```xml <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> ``` 在这个例子中,`note`是根元素,它包含了`to`、`from`、`heading`和`body`这四个子元素,且所有这些元素都允许包含文本数据(#PCDATA表示parsed character data)。 2. 外部文档声明:如果DTD存储在XML文档之外,DOCTYPE声明会引用这个外部文件,如: ```xml <!DOCTYPE 根元素 SYSTEM "文件名"> ``` 例如: ```xml <!DOCTYPE note SYSTEM "note.dtd"> ``` 在这种情况下,XML文档不会包含DTD的具体内容,而是指明了一个名为`note.dtd`的外部文件,该文件包含了元素定义。 使用DTD的原因主要有以下几点: - **一致性**:通过定义共同遵循的DTD,不同的组织可以交换数据,确保数据结构的一致性。 - **验证**:应用程序可以使用DTD来验证接收到的XML数据是否符合预先设定的结构,防止错误的数据输入。 - **自验证**:XML文档本身可以携带DTD,从而验证自身结构的正确性。 XML文档的构建模块包括: 1. **元素(Elements)**:如`<body>`、`<message>`,它们定义了文档的结构,可以包含文本、其他元素或为空。 2. **属性(Attributes)**:如`src`,提供了元素的附加信息,通常以名称/值对的形式存在,如`<img src="computer.gif" />`。 3. **实体(Entities)**:用于定义可重用的或特殊的字符或字符串,例如`&`代表`&`。 4. **PCDATA(Parsed Character Data)**:解析的字符数据,是元素内容中可以包含文本数据的部分。 5. **CDATA(Character Data)**:字符数据,用于标记一段不进行特殊解析的文本,如`<![CDATA[ ... ]]>`。 理解这些基本概念对于有效地创建和处理XML文档至关重要。DTD提供了一种强大的工具,用于确保XML数据的质量和一致性,使得数据交换和处理变得更加可靠和高效。在实际的开发工作中,尤其是在需要跨系统、跨平台传输和处理数据时,使用DTD来定义和验证XML文档结构显得尤为重要。
剩余16页未读,继续阅读
- wozaiyumenzhong2012-07-01w3school 上的东西 还不错
- Jerry-shan2014-01-16w3school 上的东西 还不错
- fengpanyunhaitian2014-06-18挺好,很有用
- 粉丝: 13
- 资源: 166
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- js-leetcode题解之158-read-n-characters-given-read4-ii-call
- js-leetcode题解之157-read-n-characters-given-read4.js
- js-leetcode题解之156-binary-tree-upside-down.js
- js-leetcode题解之155-min-stack.js
- js-leetcode题解之154-find-minimum-in-rotated-sorted-array-ii.js
- js-leetcode题解之153-find-minimum-in-rotated-sorted-array.js
- js-leetcode题解之152-maximum-product-subarray.js
- js-leetcode题解之151-reverse-words-in-a-string.js
- js-leetcode题解之150-evaluate-reverse-polish-notation.js
- js-leetcode题解之149-max-points-on-a-line.js