DTD
程序员文章站
2022-05-30 13:15:33
...
这里写自定义目录标题
1 DTD简介
1.1 DTD概述
DTD是对指定XML文档中元素结构和属性的描述,DTD是一种描述性的语言。
1.2 DTD构成
文档声明、对XML元素的描述和对XML属性的描述。
2 声明
2.1 元素声明
<!ELEMENT 元素名 EMPTY/(子元素内容)/(混合内容)/ANY/#PCDATA>
常见分类为以上5种,具体分类如下:
- 空元素:
<!ELEMENT 元素名 EMPTY>
- 只有字符数据的元素:
<!ELEMENT 元素名 #PCDATA>
- 可以包含任何内容的元素:
<!ELEMENT 元素名 ANY>
- 带有子元素的元素:
<!ELEMENT 元素名 (子元素列表)>
- 子元素:
<!ELEMENT 元素名 ()>
- 只出现一次的元素:
<!ELEMENT 元素名 (子元素名称)>
- 至少出现一次的元素:
<!ELEMENT 元素名 (子元素名称+)>
- 出现零至多次的元素:
<!ELEMENT 元素名 (子元素名称*)>
- 出现零或一次的元素:
<!ELEMENT 元素名 (子元素名称?)>
- 混合类型的元素:
<!ELEMENT 元素名 (#PCDATA|head|body)>
2.2 属性声明
<!ATTLIST 元素名 属性名 属性类型 属性附加条件>
属性类型 | 含义 | 示例 |
---|---|---|
CDATA | 字符数据,即没有标记的文本 | <!ATTLIST 学生 姓名 CDATA #REQUIRED> |
枚举 | 备选属性值的值列表 | <!ATTLIST 学生 性别 (男|女) "男"> |
ID | 该属性在文档中具有唯一性 | <!ATTLIST 学生 学号 ID #REQUIRED> |
IDREF | 文档中元素的ID类型属性的值 | |
IDREFS | 由空格分隔的元素的多个ID | |
ENTITY | 在DTD中声明的实体的名称 | |
ENTITYIES | 在DTD中声明的由空格分隔的多个实体的名称 | |
NMTOKEN | XML名称记号 | |
NMTOKENS | 由空格分隔的多个XML名称记号 | |
NOTATION | 在DTD中声明的记法的名称 |
属性缺省值 | 含义 |
---|---|
#REQUIRED | 元素每个实例必须具有该属性 |
#IMPLIED | 元素实例不必须包含该属性 |
#FIXED+固定值 | 属性值被指定为固定值,用户不能改变该属性值 |
缺省值 | 如果元素不包含该属性的属性值,那么缺省值将作为属性值 |
3 例子 - 水果信息DTD
C:/test.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 水果与季节 (季节+,水果+)>
<!ELEMENT 季节 (#PCDATA)>
<!ATTLIST 季节 id ID #REQUIRED>
<!ATTLIST 季节 名称 CDATA #REQUIRED>
<!ELEMENT 水果 (#PCDATA)>
<!ATTLIST 水果 f_id IDREF #REQUIRED>
<!ATTLIST 水果 名称 CDATA #REQUIRED>
C:/test.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE 水果与季节 SYSTEM "test.dtd">
<水果与季节>
<季节 id="f1" 名称="春天"></季节>
<季节 id="f2" 名称="夏天"></季节>
<水果 f_id="f1" 名称="草莓"></水果>
<水果 f_id="f2" 名称="西瓜"></水果>
</水果与季节>
4 引用DTD
4.1 引用内部DTD
将DTD直接写在XML文档中。
4.2 引用外部DTD
- 使用
SYSTEM
关键字引用 - 使用
PUBLIC
关键字引用外部DTD文件 - 都需要设置
standalone="no"
上一篇: XMLdtd简介及元素,属性定义
下一篇: DTD基础 一个XML只能有一个DTD
推荐阅读
-
Spring 2.0 RC4 Released: Heads-up on DTD/Schema Renaming, Scope Attribute
-
spring加载xml去远程获取dtd验证xml的问题
-
JS操作XML中DTD介绍及使用方法分析
-
MyEclipse中怎么创建xml约束文件DTD?
-
DTD
-
JS操作XML中DTD介绍及使用方法分析
-
Eclipse手动导入DTD文件实现方法解析
-
DTD编写报错Open quote is expected for attribute xxx associated with an element type xxx原因分析
-
http://www.ibatis.com/dtd/sql-map-2.dtd
-
DTD文档模型是什么