2024年4月30日发(作者:)
前面提到过的, DTD ( Document Type Definition ,文档类型定义)就是定义 XML 文档
中元素的结构和内容等。其实 DTD 就相当于 XML 中的“词汇”和“语法”,不同的行业可以
定义自己的“词汇”和“语法”,以利于解析器验证 XML 文档的有效性,并且这样也利于行
业中和行业之间的交流。就相当于只有当两个人对各自说出的词汇都理解对方的时候才能有
顺利的交流。这其实就是对 XML 文档使用元素的定义的以层抽象,把它的定义独立出一个文
件,以利于对信息的隐藏和扩展。这也可以把它想象成程序语言,比如 C# 中的接口的定义。
把 DTD 文件想象成一个接口,而引用这个 DTD 文件的 XML 文档是这个接口的实现类,只要
了解了这个 DTD 文件,就大致知道了和这个 DTD 文件相链接的 XML 文档的一些框架信息。
DTD 文件也可以看成是一系列 XML 文档的模板,它定义了相关 XML 文档的元素,属性,排
列方式(元素,属性等),元素的内容类型,以及元素的层次结构等。
DTD 中元素的声明
<;!ELEMENT 元素名(元素描述) >;
这里主要介绍元素描述,元素的描述包含两部分:
1. 如果元素是简单元素,即该元素不包含子元素,则描述部分是针对该元素的
内容的限制或是规定。这种限制的描述可以是:
#PCDATA :元素的内容只能是可解析的文本数据。
<;!ELEMENT 元素名 (#PCDATA)>;
EMPTY :元素内容必须为空,但可以包含属性。
<; ! ELEMENT 元素名 EMPTY>;
2. 如果元素是复杂元素,即该元素包含子元素,则元素描述包含对子元素名的
列表(可用正则表达式表达)。元素描述的括号表示内容描述的组合。
<;!ELEMENT book(title, author+, summary | content)>;
正则表达式用法:
( ) 给元素分组
(A | B | C), (D | E), F
| 在列出的对象中选择一个 (A | B)
* 对象允许出现 0 到多次 (A*)
+ 对象应出现 1 到多次 (A+)
对象可以出现 0 到 1 次 (A?)
, 对象以指定顺序出现
(A, B, C)


发布评论