位置:首页 > Web开发 > XML在线教程 > XML文档类型声明

XML文档类型声明

XML文档类型声明,俗称DTD,是一种方式来描述XML语言准确。检查的DTD对词汇的适当的XML语言的语法规则的XML文档的结构和有效性.

一个XML的DTD既可以在文档中指定的,或者它可以被保存在一个单独的文件中,并且可以分别连结.

语法

一个DTD的基本语法如下所示:

<!DOCTYPE element DTD identifier
[
   declaration1
   declaration2
   ........
]>

在上面的句法

  • DTD开始<!DOCTYPE分隔符.

  • 一个元素告诉解析器来解析从指定的根元素的文档.

  • DTD标识符是用于文档类型定义,它可以是路径到互联网上的文件系统或URL上的文件。如果DTD是指向外部路径,它被称为外部子集.

  • 方括号[]括起来的实体声明称为内部子集的可选列表.

内部DTD

一个DTD被称为内部DTD,如果元素的XML文件中声明。以指它作为内部DTD,XML声明中的独立属性必须设置为yes。这意味着,在声明的工作独立于外部源.

句法

内部DTD的句法如下所示:

<!DOCTYPE root-element [element-declarations]>

这是根元素声明的名称.

示例

以下是内部DTD的一个简单例子:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE address [
   <!ELEMENT address (name,company,phone)>
   <!ELEMENT name (#PCDATA)>
   <!ELEMENT company (#PCDATA)>
   <!ELEMENT phone (#PCDATA)>
]>
<address>
   <name>Tanmay Patil</name>
   <company>YiiBai</company>
   <phone>(011) 123-4567</phone>
</address>

让我们通过上面的代码:

开始声明 - 开始XML声明与下面的语句

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

DTD - 紧接在 XML header 文档类型 声明如下, 通常被称为在DOCTYPE:

<!DOCTYPE address [

TDOCTYPE声明有一个感叹号(!)的元素名称的开始。在DOCTYPE通知一个DTD与此XML文档相关联的解析器.

DTD的内容 - DOCTYPE声明后面是DTD的内容,声明的元素,属性,实体和符号:

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone_no (#PCDATA)>

许多元素都在这里声明补<名称>文档的词汇。 <!元素名称(#PCDATA)>定义的元素名称是键入“#PCDATA”的。这里#PCDATA是语法分析的文本数据.

结束声明 - 最后,DTD中的声明部分使用的是右括号和右尖括号被关闭(]>)。这有效地结束的定义,然后,在XML文档紧跟.

规则

  • 文档类型声明必须出现在文件(仅由XML头之前)的开始 - 它不是在文档中允许的其他地方。

  • 类似的DOCTYPE声明,该声明的元素必须以感叹号.

  • 在文档类型声明的名称必须与根元素的元素类型相匹配.

外部DTD

在外部DTD元素的XML文件外声明。它们是通过指定其可以是法律.dtd文件或一个有效的URL,系统的属性进行访问。是指它作为外部DTD,XML声明standalone属性必须设置为no。这意味着,声明中包含从外部源信息.

句法

以下是句法外部DTD:

<!DOCTYPE root-element SYSTEM "file-name">

其中filename是.dtd扩展名的文件.

示例

下面的例子显示外部DTD用法:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE address SYSTEM "address.dtd">
<address>
  <name>Tanmay Patil</name>
  <company>YiiBai</company>
  <phone>(011) 123-4567</phone>
</address>

DTD文件address.dtd的内容是如图所示:

<!ELEMENT address (name,company,phone)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT phone (#PCDATA)>

类型

您可以通过使用系统标识符和公共标识符引用一个外部DTD.

系统标识符

系统标识符可以指定包含DTD声明一个外部文件的位置。语法如下:

<!DOCTYPE name SYSTEM "address.dtd" [...]>

正如你可以看到它包含的关键字系统和URI引用指向该文件的位置.

公共标识

公共标识符提供了一种机制来定位DTD资源和写入如下:

<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">

正如你可以看到它开始与关键字public,然后由专门的标识。公共标识符被用来标识在一个目录中的条目。公共标识可以按照任何格式,但是,常用的格式被称为正式公开标识符,或符,FPI.