XML DTD既可以在文档中指定,也可以保存在单独的文档中,然后可以将文档链接到DTD文档以使用它。
语法
DTD的基本语法如下 -
<!DOCTYPE element DTD identifier [ declaration1 declaration2 ........ ]>
在上面的语法中 -
DTD
以<!DOCTYPE
分隔符开头。[]
包含一个称为内部子集的可选实体声明列表。如果在XML文件中声明元素,则这样的DTD称为内部DTD。 要将其作为内部DTD引用,XML声明中的standalone
属性必须设置为yes
。 它表示声明的工作独立于外部源。
语法
内部DTD的语法如下所示 -
<!DOCTYPE root-element [element-declarations]>
其中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 Su</name> <company>zyiz zyiz</company> <phone>(086) 123-4567-789</phone> </address>
下面来看看上面的代码 -
开始声明 - 使用以下语句开始XML声明。
<?xml version = "1.0" encoding = "UTF-8" standalone = "yes" ?>
DTD
- 紧跟在XML标头之后,文档类型声明如下,通常称为DOCTYPE
-
<!DOCTYPE address [
DOCTYPE
声明在元素名称的开头有一个感叹号(!
)。 DOCTYPE
通知解析器DTD与此XML文档相关联。
DTD主体 - DOCTYPE
声明后跟DTD的主体,可以在主体中声明元素,属性,实体和符号 -
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone_no (#PCDATA)>
这里声明了几个元素,它们构成了<name>
文档的词汇表。 <!ELEMENT name(#PCDATA)>
将元素名称定义为“#PCDATA”
类型。这里#PCDATA
表示可解析的文本数据。
结束声明 - 最后,DTD的声明部分使用右括号和闭合角括号 - ]>
关闭。 这有效地结束了定义,此后就是XML文档的内容。
规则
DOCTYPE
声明类似,元素声明必须以感叹号开头。Name
必须与根元素的元素类型匹配。在外部DTD元素在XML文件之外声明。 可以通过指定系统属性来访问它们,这些属性可以是合法的.dtd
文件或有效的URL。 要将其作为外部DTD引用,必须将XML声明中的standalone
属性设置为no
。 它表示声明包括来自外部源的信息。
语法
以下是外部DTD的语法 -
<!DOCTYPE root-element SYSTEM "file-name">
其中file-name
是扩展名为.dtd
的文件。
示例
以下示例显示了外部DTD用法 -
<?xml version = "1.0" encoding = "UTF-8" standalone = "no" ?> <!DOCTYPE address SYSTEM "address.dtd"> <address> <name>Tanmay Su</name> <company>zyiz zyiz</company> <phone>(086) 123-4567789</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" [...]>
如上所见,它包含关键字SYSTEM
和指向文档位置的URI引用。
PUBLIC标识符
PUBLIC
标识符提供了一种定位DTD资源的机制,如下所示 -
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
如上所见,它以关键字PUBLIC
开头,后跟专用标识符。 PUBLIC
标识符用于标识目录中的条目。 PUBLIC
标识符可以遵循任何格式,但是,常用的格式称为PUBLIC
公共标识符或FPI。