XML DTD 语法详解
例子: _BOOk.dtd_
^< !ELEMENT ^book ^(chapter+)^>
DTD 一般的生命格式一般如下:
^^< !ELEMENT ^^elementname ^^elementtype ^^modifiers>
eg:
^< !ELEMENT ^chapter ^(chapNum,chapTitle)^>
^< !ELEMENT ^chapNum ^(#PCDATA)^>
^< !ELEMENT ^chapTitle ^(#PCDATA)^>
元素的定义
语法: < !ELEMENT< !–关键字–> NAME< !–元素名称–> CONTENT< !–元素类型–>
CONTENT:
EMPTY-该元素不能包含子元素和文本,但可以 有属性-- (空元素)
ANY-该元素可以包含任何在DTD中定义的内容
^^< !–任何数据–>
#PCDATA-可以包含任何字符数据,但是不能在其中包含任何子元素
^^< !–是XML预定义的标记、其全称是Parsable/Character/DATA,即“可解析字符数据“,意思his里边的数据可以让解析器去解析–>
纯元素类型-只包含子元素,并且这些子元素没有文本
混合类型-包含子元素 和 文本数据混合体
DTD中的修饰符号
符号 | 用途 | 示例 | 示例说明
( ) | 用来给元素分组 | (古龙|金庸|刘骏),(潘素金|汪严龙),谭洲燚 | 分成三组
| |在列出的对象中选择一个 | (男|女) | 表示男人和女人必须出现,两个者必须选择一
+ | 该对象至少出现一次,可以出现多次(1次或者多次) | ( 成员+) |表示成员必须出现,而且可以出现多个成员
* | 该对象允许出现0次到任意多次 | (爱好*) | 爱好可以出现0到多次
? | 该对象可以出现多次,但是只能出现一次(0到1次) | (菜鸟?)| 可以出现,也可以不出现,如果出现,只能出现一次
, | 对象必须按顺序出现 | (西瓜,苹果,香蕉) | 这三个 必须按顺序出现
< !–可以联系 正则表达式 记忆–>
属性的定义
语法
< !ATTLIST 元素名称
属性名称 类型 属性特点
…..
>
类型
CDATA
< !–字符数据类型,不包括(<,>,&,”),如果用的话,需要使用编码方式:<,>,&,"–>
ID
< !–用于确定文档中的元素,不可相同–>
IDREF/IDREFS
< !–引入文档中的ID类属性元素/多个该元素–>
NMTOKEN/NMTOKENS
< !–一个有效的XML名称/多个有效的XML名称–>
EnumeratedENITITY/ENTITIES
< !–代表从外部文件获得的二进制数据/复数形式,用空格分开enitity–>
NOTIATIONS
< !–标记符号–>
NOTIATION
< !–标记符号–>
属性特点
REQUIRED
IMPLIED
FIXED value
Default value
属性类型—CDTA
比如:
属性类型—NMTOKEN/NMTOKENS
· NMTOKEN 是 CDATA 的一个子集,表示属性 必须是英文字母、数字、 句号、破折号、下划线、或者冒号,属性值不能有 空格。
· NMTOKEN 和 NMTOKENs类似,包含多个由空格分割的字符