XML文档类型声明,俗称的DTD,是一种方式来描述XML语言准确。检查的DTD对词汇的适当的XML语言的语法规则的XML文档的结构和有效性.
一个XML的DTD既可以在文档中指定的,或者它可以被保存在一个单独的文件中,并且可以分别连结.
一个DTD的基本语法如下所示:
<!DOCTYPE element DTD identifier [ declaration1 declaration2 ........ ]>
在上面的句法
DTD开始
一个元素告诉解析器来解析从指定的根元素的文档.
DTD标识符是用于文档类型定义,它可以是路径到互联网上的文件系统或URL上的文件。如果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>Howcodex</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是语法分析的文本数据.
结束宣言 - 最后,DTD中的声明部分使用的是右括号和右尖括号被关闭(]>)。这有效地结束的定义,然后,在XML文档紧跟.
文档类型声明必须出现在文件(仅由XML头之前)的开始 - 它不是在文档中允许的其他地方。
类似的DOCTYPE声明,该声明的元素必须以感叹号.
在文档类型声明的名称必须与根元素的元素类型相匹配.
在外部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>Howcodex</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.