XML DTD 文档类型定义
程序员文章站
2022-05-30 12:29:33
...
【简述】
DTD 规定了一个语法分析器以解释一个
Validating XML 文档所需要知道的所有规则的细节
内部 DTD 声明
<!DOCTYPE 根元素名[
元素描述
]>
案例:
<?xml version="1.0" encoding="GB2312">
<!DOCTYPE myfile[
<!ELEMENT title (#PCDATA)> <!-- 中间不能少了空格 否则会报错 -->
<!ELEMENT title (#PCDATA)> <!-- 中间不能少了空格 否则会报错 -->
]>
外部 DTD 声明
<!DOCTYPE 根元素名 SYSTEM/PUBLIC "dtd 文件路径">
!DOCTYPE : 要定义一个 DOCTYPE
SYSTEM/PUBLIC: 两个选其一
SYSTEM: 自己定义的
PUBLIC: 权威机构定义的
元素声明
<!ELEMENT element-name element-definition>
!ELEMENT 表示开始元素设置 必须大写
element-name 表示要设置的元素名称
element-definition 定义元素的类型
元素类型
【ANY 类型】<!ELEMENT 元素名 ANY>
该元素可以包含任何在 DTD 中定义的元素内容
元素出现的次数和顺序将不受限制
【EMPTY 类型】<!ELEMENT 元素名 EMPTY>
不能包含子元素和文本 但可以有属性
【#PCDATA 类型】<!ELEMENT 元素名 (#PCDATA)>
可以包含任何字符数据但不能包含子元素
【父元素类型 与正则配合使用】<!ELEMENT element(A, B+, C*, D?)>
表明 element 元素是父元素 并且它必须有正好一个 A
至少一个 B 零个或多个 C 以及零个或一个 D
<!ELEMENT element(A|B|C)>
父元素 element 可能有 A或B或C
【混合元素类型】<!ELEMENT 元素名(#PCDATA|子元素名1|子元素名2|....|子元素n)*>
【属性声明】
格式:<!ATTLIST 元素名
属性名 属性类型 属性特点
.....
>
【属性特点】
#REQUIRED 格式:<!ATTLIST 元素名 属性名 #REQUIRED>
必须赋值的属性 必须为这个属性赋予一个值
#IMPLIED : 格式:<!ATTLIST 元素名 属性名 #IMPLIED>
属性值可有可无 不用设定默认值
#FIXED value 格式:<!ATTLIST 元素名 属性名 #FIXED "默认值">
固定取值属性 需要提供一个默认值 不希望替代该属性值
Default value 格式:<!ATTLIST 元素名 属性名 属性类型 "默认值">
事先定义了默认值的属性 需要在 DTD 中提供一个默认值
【属性类型】
CDATA 纯文本 由可显示字符组成的字符串
格式:<!ATTLIST 元素名 属性名 CDATA 属性特点>
实例:<!ATTLIST 木偶 姓名 CDATA #REQUIRED>
案例:<!ATTLIST 木偶 姓名="匹诺曹 123 Pi Nuocao"/>
Enumerated 收取来自一组可接收的取值范围 在 () 内被指定
ID 为某个元素定义唯一标识
IDREF 引用已定义的 ID 值
IDREFS 应用已定义的 ID 值
ENTITY 取值为一个已定义的实体(特殊字符)
ENTITIES 包含了多个外部 entity 不同的 entity 之间用空格隔开
NMTOKEN 属性值只能由【字母 数字 下划线 . : -】组成
NMTOKENS 属性值能够由多个 nmtoken 组成 每个 nmtoken 之间用空格隔开
NOTATION 取值为一个 DTD 中声明的符号
来自《XML编程与应用教程(第2版)》自行整理的笔记
上一篇: 【XML学习笔记】2:XML中的DTD(文档类型定义)
下一篇: TensorFlow常用函数(三)