Maison  >  Article  >  développement back-end  >  XML中的DTD文档类型定义详细介绍

XML中的DTD文档类型定义详细介绍

黄舟
黄舟original
2017-03-10 19:32:352043parcourir

这篇文章主要介绍了XML中的DTD文档类型定义,是XML入门学习中的基础知识,需要的朋友可以参考下

XML 文档类型定义,俗称 DTD,它是一种准确描述 XML 语言的方式。DTDs 根据适当 XML 语言的语法规则检查 XML 文档的词汇和结构的有效性。

XML DTD 可以指定在文档内部,也可以保存在独立的文档中然后单独链接。

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

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

上述语法中:

DTD 以 be674625155e4dac5380b8195dd18786 文档词汇声明。07c182a8bf130ca504f1d62d73af6463 定义元素_名称_为 "#PCDATA" 类型。这里 #PCDATA 意味着可解析的文本数据。

结束声明 - 最后,DTD 的声明部分使用方括号和尖括号(]>)闭合。这是一个有效的结束定义,后面紧跟的就是 XML 文档内容。

规则

文档类型声明必须出现在文档的开头部分(只先与 XML 头),不允许出现在文档的任意其他位置。
类似于 DOCTYPE 声明,元素声明必须以感叹号开始。
文档类型声明中的 Name 必须与根元素的类型匹配。
外部 DTD
在外部 DTD 中元素声明在 XML 文档的外部。通过指定 system 属性来访问,这个属性值可以是合法的 .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 关键字开始,后面紧跟的是专门的标识符。公共标识符被用来标识目录中的条目。公共标识符可以遵循任意格式,但是常用的格式是正式公用标识符(或者 FPIs)。

声明元素
在dtd中声明元素(在一个xml如果一个元素想要让它是合法的,则需要在dtd中声明)
      语法:7f967170475b9775e774ed6092b90448和eae82690b361eda9b3cef2401fb0444d这两种方式
3a8419cd20340b2d5be4d3b6cf82745f

例如:

<!ELEMENT br EMPTY>

则xml可以写成:

<br/>

注意点
在dtd中
所有的 XML 文档(以及 HTML 文档)均由以下简单的构建模块构成:
元素
属性
实体
PCDATA
CDATA
下面是一些注意点:
(1)实体是用来定义普通文本的变量。实体引用是对实体的引用。
大多数同学都了解这个 HTML 实体引用:" "。这个“无折行空格”实体在 HTML 中被用于在某个文档中插入一个额外的空格。
当文档被 XML 解析器解析时,实体就会被展开。
XML中的DTD文档类型定义详细介绍

(2) PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。
可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
PCDATA 是会被解析器解析的文本。这些文本将被解析器解析成实体以及标记。
文本中的标签会被当作标记来处理,而实体会被展开。
不过,被解析的字符数据不应当包含任何 &、d9cc50603bc7f01c48909aac2ab47bd6 字符;需要使用 &、< 以及 > 实体来分别替换它们。
(3)CDATA
CDATA 的意思是字符数据(character data)。
CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn