- XML 教程
- XML - 首页
- XML - 概述
- XML - 语法
- XML - 文档
- XML - 声明
- XML - 标签
- XML - 元素
- XML - 属性
- XML - 注释
- XML - 字符实体
- XML - CDATA 区段
- XML - 空格
- XML - 处理
- XML - 编码
- XML - 验证
- XML 有用资源
- XML - 快速指南
- XML - 有用资源
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 声明中的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 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 通知解析器此 XML 文档与 DTD 相关联。
DTD 主体 - 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 声明中的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 Patil</name> <company>TutorialsPoint</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" [...]>
如您所见,它包含关键字 SYSTEM 和指向文档位置的 URI 引用。
公共标识符
公共标识符提供了一种定位 DTD 资源的机制,其编写方式如下:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
如您所见,它以关键字 PUBLIC 开头,后跟一个专用标识符。公共标识符用于标识目录中的条目。公共标识符可以遵循任何格式,但是,常用的格式称为正式公共标识符,或 FPI。