【C# XML 】DTD(Document Type Definition):文档类型定义


DTD(Document Type Definition):文档类型定义

文档类型定义 (DTD) 语言是 XML 规范的本机语言,它是一种架构语言,其功能相对有限,但除了架构的表达式之外,它在 XML 中还有其他用途。

DTD应用范围

xHTML 、HTML、XML 类型的文件中

用于在xHTML 、HTML、XML 文件中引用*.dtd文件,告诉浏览器使用那个dtd框架约束
 XML Schema 使用命名空间 所以不需要 告诉浏览器使用那个dtd框架约束

HTML5只有一种标准模式,HTML5不在基于SGML 所以没有其他框架模式。但是为了HTML5文件兼容之前浏览器 尤其是IE9之前的浏览器 启用标准模式解析html5文件,所以必须写。

为什么使用 DTD?

通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。

通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。

而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。

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

DTD的局限性:

1、DTD不遵守XML语法
2、DTD数据类型有限
3、DTD不可扩展
4、DTD不支持命名空间

XML引入DTD的方式(2种):

注意:!DOCTYPE 不是 HTML 标签, 它是一条指令。 告诉浏览器采用那个dtd 约束文档

一种是直接写在xml文件内
一种是引入外部xml文件

1、一种是直接写在xml文件内 

假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:

带有 DTD 的 XML 文档实例(请在 IE5 以及更高的版本打开,并选择查看源代码):

<?xml version="1.0"?>
DOCTYPE note [
from,heading,body)>

from (#PCDATA)>


]>

Tove
<from>Janifrom>
Reminder
Don't forget me this weekend

解释:

  • !DOCTYPE note (第二行)定义此文档是 note 类型的文档。
  • !ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
  • !ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
  • !ELEMENT from (第五行)定义 frome 元素为 "#PCDATA" 类型
  • !ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
  • !ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型

 

2、一种是引入外部xml文件

假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:

注解:root-element为根元素

这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD:

<?xml version="1.0"?>
"note.dtd

">

  Tove
  <from>Janifrom>
  Reminder
  Don't forget me this weekend!

这是包含 DTD 的 "note.dtd" 文件:

from,heading,body)>

from (#PCDATA)>



 
 

DTD的应用

DTD在html中的应用,html也是xml。

//HTML5
DOCTYPE html>//HTML5不基于SGML,所以不需要引用DTD。在HTML5中DOCTYPE>只有一种

//HTML4.01中,DOCTYPE>声明引用DTD,因为HTML4.01基于SGML。DTD规定了标记语言的规则,这样浏览器才能正确的呈现内容。在HTML4.01中有三种DOCTYPE>声明。

严格模式:

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/strict.dtd">

过渡模式:

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">

框架模式:

DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"  "http://www.w3.org/TR/html4/fr

>
C