【XML】XML - DTD

╰半橙微兮° 2022-08-19 01:46 315阅读 0赞

DTD即Document Type Definition文档类型定义,规定了XML文档的逻辑结构,可在XML文档中声明,也可作为一个外部引用。通过DTD,我们可以知道XML文档的格式,也可以用来验证所传输数据的格式是否正确。

1、在XML文档内部声明DTD——

DTD可以直接在XML文档内部声明,语法格式如下:

  1. <!DOCTYPE root-element [element-declaration]>

DOCTYPE:关键字
root-element:根元素
element-declaration:根元素的子元素声明
例子如下:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE family [ <!ELEMENT family (name,address)> <!ELEMENT name (#PCDATA)> <!ELEMENT address (#PCDATA)> ]>
  3. <family>
  4. <name>Smith</name>
  5. <address>China</address>
  6. </family>

第二行!DOCTYPE family定义此文档为family类型。
第三行!ELEMENT family定义family根元素有两个子元素。
第四行!ELEMENT name定义name元素为“#PCDATA”类型。
第五行!ELEMENT address定义address元素为“#PCDATA”类型。
PCDATA即parsed character data,被解析的字符数据,对应的字符数据会被解析器解析;对应的还有CDATA,这种类型的数据不会被解析。

2、在XML文档外部声明DTD——

DTD还可以在XML文档外部声明,语法格式如下:

  1. <!DOCTYPE root-element SYSTEM "dtd_name">

SYSTEM:关键字
dtd_name:外部DTD的文件名
修改上面的例子,XML文档如下:

  1. <?xml version="1.0"?>
  2. <!DOCTYPE family SYSTEM "family.dtd">
  3. <family>
  4. <name>Smith</name>
  5. <address>China</address>
  6. </family>

外部的family.dtd文档如下:

  1. <!ELEMENT family (name,address)>
  2. <!ELEMENT name (#PCDATA)>
  3. <!ELEMENT address (#PCDATA)>

3、DTD元素声明——

DTD元素声明要使用到ELEMENT关键字,从上面的例子中也可以看到,但是有多种不同的形式,下面逐个说明。
使用类别关键字EMPTY声明一个空元素(元素内容为空但可能包含一些子元素):

  1. <!ELEMENT element_name EMPTY>

使用(#PCDATA)声明元素内容为PCDATA的元素:

  1. <!ELEMENT element_name (#PCDATA)>

使用类别关键字ANY声明可包含任何内容的元素:

  1. <!ELEMENT element_name ANY>

声明带有子元素的元素(注意保持子元素的声明顺序,子元素也可以有它的子元素):

  1. <!ELEMENT father (child1,child2,child3)>

当声明带有子元素的元素时,还可以对子元素进行正则匹配,例如,子元素只出现一次:

  1. <!ELEMENT father (child)>

子元素出现零次或一次(使用”?”):

  1. <!ELEMENT father (child?)>

子元素出现一次或多次(使用”+”):

  1. <!ELEMENT father (child+)>

子元素出现零次或多次(使用”*”):

  1. <!ELEMENT father (child*)>

子元素是多个待选子元素中的任意一个(使用”|”):

  1. <!ELEMENT father (child1|child2|child3)>

对子元素进行分组(使用”()”):

  1. <!ELEMENT father ((child1|child2),(child3|child4)>

上面提到的三个正则匹配符号“?”、“+”和“*”都是针对单个子元素的,还可以对子元素组使用:

  1. <!ELEMENT father (child1|child2|child3)*>

4、DTD属性声明——

DTD属性声明要使用到ATTLIST关键字,基本格式如下:

  1. <!ATTLIST element_name attribute_name attribute_type value>

attribute_type属性类型有以下几个类型:

这里写图片描述

value属性值有以下几种情况:

这里写图片描述

5、DTD实体声明——

DTD实体定义了用来引用普通文本或特殊符号的变量,使用ENTITY关键字,类似于DOCTYPE,可在内部或外部声明。
例如,在内部声明:

  1. <!ENTITY name "Smith">

在XML中使用:

  1. <family>&name;</family>

发表评论

表情:
评论列表 (有 0 条评论,315人围观)

还没有评论,来说两句吧...

相关阅读

    相关 【XML】 DTD 详解

    文档类型定义(DTD) 可定义合法的XML文档构建模块 ,它使用一系列合法的元素来定义文档的结构。 DTD可被声明于XML文档中,也可做为一个外部引用。  

    相关 XML: DTD详解(二)

    文档类型定义和命名空间   有效(Valid)的XML文档:   首先,XML文档是个格式正规的(Well-formed)XML文档;(见[格式正规的XML:语法 属性

    相关 【XML】XML - DTD

    DTD即Document Type Definition文档类型定义,规定了XML文档的逻辑结构,可在XML文档中声明,也可作为一个外部引用。通过DTD,我们可以知道XML文档

    相关 DTD基本语法

    [DTD基本语法][DTD] XML作为一门标记语言,它就需要一种文档(即文档类型定义DTD)来定义,DTD可以看作是一类XML文档的模板。它定义了文档的逻辑结构,规定了XM

    相关 DTD和Schema

        DTD和Schema是两种常用的xml文件的约束文件,都是用来约定XML文件,目的是会提示使用者让使用者按照规定的格式去书写XML,验证XML文件有效性。主要的区别有一

    相关 DTD

    dtd基本认识 1. 基本概念:document type definition–文档类型定义 2. 该文件一般和xml文件配合使用 3. 主要是用来约束xml(不