📅  最后修改于: 2023-12-03 15:30:34.706000             🧑  作者: Mango
DTD(Document Type Definition)是一种定义XML和XHTML文档中的合法元素和合法属性的语法。DTD由声明元素、属性、实体和CDTA等各种组成,是XML和XHTML文档中必不可少的一部分。在DTD中定义的元素、属性和实体等信息是用来验证XML和XHTML文档的。DTD可以用DTD文件的形式存在,也可以直接嵌入到XML和XHTML文档中。
DTD声明是DTD的核心部分。在DTD声明中,我们可以定义各种元素、属性、实体、CDTA以及注释等信息。
DTD声明的基本语法如下:
<!DOCTYPE root-element SYSTEM "dtd-file-name">
其中,root-element是XML或XHTML文档的根元素,dtd-file-name是DTD文件的文件名。
如果DTD声明直接嵌入到XML和XHTML文档中,则可以省略dtd-file-name参数,如下所示:
<!DOCTYPE root-element [
定义各种元素、属性、实体、CDTA以及注释等信息
]>
在DTD声明中,通常包括以下几种信息:
下面分别介绍这些要素的语法。
DTD中的Entity分为Internal Entity和External Entity两种类型。
定义内部实体的语法如下:
<!ENTITY entity-name "entity-value">
其中,entity-name是实体名称,entity-value是实体值。
此外,还可以通过引用其他内部实体来定义实体,如下所示:
<!ENTITY entity-name "&其他实体名称;">
定义外部实体的语法如下:
<!ENTITY entity-name SYSTEM "external-document-url">
其中,entity-name是实体名称,external-document-url是外部实体的URL。
在DTD中定义元素需要指定元素名称,元素类型,内容模型以及各个属性。
定义元素的语法如下:
<!ELEMENT element-name 元素类型 (内容模型)>
其中,element-name是元素名称,元素类型指定元素的类型(如EMPTY、PCDATA、 CDATA等),内容模型指定元素的内容模型(如EMPTY、ANY、CDATA、 MIXED等)。
在DTD中定义属性需要指定属性名称,数据类型以及默认值。
定义属性的语法如下:
<!ATTLIST element-name attribute-name attribute-type attribute-default>
其中,attribute-name是属性名,attribute-type是属性类型,attribute-default是属性默认值。
CDTA用于为DTD添加注释,语法如下:
<!-- 注释内容 -->
下面是一个简单的DTD示例,用于定义一个名为“学生”的XML文档,其中学生包含姓名属性和成绩元素。
<!DOCTYPE 学生 [
<!ELEMENT 学生 (姓名, 成绩)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 成绩 (#PCDATA)>
<!ATTLIST 姓名 性别 CDATA "男">
]>
<学生>
<姓名 性别="女">小明</姓名>
<成绩>90</成绩>
</学生>
在上面的示例中,定义了学生,姓名和成绩三个元素,其中姓名元素还定义了性别属性。同时,定义了性别属性的默认值为“男”。