XML - DTD

XML文档类型声明(通常称为DTD)是一种精确描述XML语言的方法. DTD根据适当的XML语言的语法规则检查XML文档结构的词汇和有效性.

XML DTD既可以在文档中指定,也可以保存在单独的文档中

语法

DTD的基本语法如下 :

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

在上面的语法中,

  • DTD 以<!DOCTYPE分隔符开头.

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

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

  • 方括号[] 附上一个名为内部子集的可选实体声明列表.

内部DTD

如果在XML文件中声明了元素,则DTD称为内部DTD.要将其称为内部DTD,XML声明中的独立属性必须设置为.这意味着,声明独立于外部源.

语法

以下是内部DTD的语法 :

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

其中 root-element 是根元素的名称,元素声明是您声明的位置元素.

示例

以下是内部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>TutorialsPoint</company>
   <phone>(011) 123-4567</phone>
</address>

让我们看看上面的代码 :

开始宣言 : 使用以下语句开始XML声明.

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

DTD : 紧接在XML标题之后,文档类型声明跟随,通常称为DOCTYPE :

<!DOCTYPE address [

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

DTD Body :  DOCTYPE声明之后是DTD的主体,您可以在其中声明元素,属性,实体和符号.

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

这里声明了几个构成< name>的词汇表的元素.文献. <!ELEMENT name(#PCDATA)>将元素 name 定义为"#PCDATA"类型.这里#PCDATA表示可解析的文本数据.

结束声明 : 最后,使用右括号和关闭尖括号(]> )关闭DTD的声明部分.这有效地结束了定义,然后立即跟随XML文档.

规则

  • 文档类型声明必须出现在文档的开头(仅在XML标题之前) :

  • 与DOCTYPE声明类似,元素声明必须以感叹号开头.

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

外部DTD

在外部DTD元素在XML文件外声明.可以通过指定系统属性来访问它们,这些属性可以是合法的 .dtd 文件或有效的URL.要将其称为外部DTD,XML声明中的独立属性必须设置为.这意味着,声明包含来自外部源的信息.

语法

以下是外部DTD的语法 :

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

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

示例

以下示例显示外部DTD使用情况 :

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

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

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

类型

您可以使用系统标识符来引用外部DTD或公共标识符.

系统标识符

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

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

如您所见,它包含关键字SYSTEM和指向文档位置的URI引用.

公共标识符

公共标识符提供了一种定位DTD资源的机制,编写如下:<

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

如您所见,它以关键字PUBLIC开头,后跟专用标识符.公共标识符用于标识目录中的条目.公共标识符可以采用任何格式,但常用的格式称为正式公共标识符或FPI .