ANY
如果需要定义某个元素的值可以是任意类型,可采用如下语法
<!ELEMENT 元素名 ANY>
DTD必须定义XML文档中允许出现的所有元素,所以下面这样是不行的,因为<hellotag>没有在dtd中定义过
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
<!ELEMENT messages ANY>
]> <messages>
<message>
<hellotag>hello</hellotag>
</message>
</messages>
#PCDATA
定义元素内容为字符串,不能包含子元素
实例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
<!ELEMENT messages (message)>
<!ELEMENT message (content)>
<!ELEMENT content (#PCDATA)>
]> <messages>
<message>
<content>hello</content>
</message>
</messages>
混合元素,即既可以包含字符串也可以包含子元素
格式:
(注意 1:#PCDATA只能出现在子元素的最前面
2:*表示这些子元素可出现0次或多次,如果没有*,则各个子元素互斥,只能出现一个
3:使用 | 分隔子元素,则子元素的出现是无序的,如果使用逗号","则子元素的出现顺序是严格按照书写顺序 )
<!ELEMENT 父元素名 (#PCDATA | 子元素1 | 子元素2 |子元素n)*>
实例:略
定义元素属性
格式:
<!ATTLIST 属性所属的元素 属性名 属性类型 [元素对属性的约束] [默认值]>
其中,元素对属性的约束 和 默认值 是可选的,但如果没有指定前者,则必须指定后者,
当元素对属性的约束 是 "#REQUIRED"时,不能指定默认值,
当元素对属性的约束 是 "#IMPLIED"时,不能指定默认值,
当元素对属性的约束 是 "#FIXED",时,必须指定默认值
#REQUIRED:即必需的属性,意味着必须为该元素提供属性
#IMPLIED:意即该属性是可有可无的
#FIXED:即该属性是固定的,定义时必须指定固定值。使用该元素时无须为其分配该属性,XML处理器会自动为该属性增加固定值
实例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE messages[
<!ELEMENT messages (message | shortcut)*>
<!ELEMENT message (content)>
<!ELEMENT shortcut (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<!ATTLIST messages hashcode CDATA #REQUIRED>
]> <messages hashcode="dfsfdsfsdf">
<message>
<content>hello</content>
</message>
<shortcut>
hello,world
</shortcut>
<shortcut>
hello,world
</shortcut>
</messages>
DTD支持的属性列表:
--