ELEMENT
ELEMENT 语句用于声明 DTD 所定义的文档类型中使用的每个元素。先按名称声明元素,然后指定该元素允许包含的内容。
语法
<!ELEMENT name content >
参数
name
元素的名称。要求大小写匹配。content
元素允许包含的内容模型,必须是下列选项中的一个:ANY - 元素中允许包含任何内容。如果在元素声明中使用此关键字,元素及其所有子节点允许一个开放的、没有限制的内容模型。
EMPTY - 不允许元素包含内容,必须保留为空。
Declared content rule – 对于此选项,您需要编写内容规则并将其包括在一对括号中。
下表显示保留的关键字或标点符号,可以与 DTD 中声明的其他元素的名称一起使用,构造元素内容规则。
符号
说明
#PCDATA
允许分析的字符数据作为元素内容的一部分。
name
元素的名称。可以是正在定义的元素,也可以是 DTD 中使用其他 ELEMENT 声明按名称定义的其他元素。
如果内容规则中没有任何其他标点或符号,命名的元素必须出现一次,并且只允许出现一次。
()
尽管只要为元素声明内容模型,就至少需要一对括号,但是,也可以嵌套更多对括号。可以使用此方法为元素定义更复杂的内容模型。
|
可以使用竖线分隔两个命名的元素。使用竖线时,指示其中一个元素(即竖线之前的元素或竖线之后的元素)可以作为子元素出现。
,
可以使用逗号分隔两个命名的元素或嵌套的规则。使用逗号时,指示元素/规则必须按指定的顺序出现。
?
问号可以作为后缀/操作数使用。使用问号时,指示问号之前的元素/规则是可选项,但是如果使用,在 XML 文档结构的此位置只能出现一次。
+
加号可以作为后缀/操作数使用。使用加号时,指示加号之前的元素/规则是必选项,在 XML 文档结构的此位置可以出现多次。
*
星号可以作为后缀/操作数使用。使用星号时,指示星号之前的元素/规则是可选项,在 XML 文档结构的此位置可以出现多次。
示例
声明一个可以包含任何内容的 <test> 元素:
<!ELEMENT test ANY >
声明一个必须为空(即不能有内容)的 <Image> 元素:
<!ELEMENT Image EMPTY >
声明一个只能包含字符数据(没有其他标记)的 <title> 元素:
<!ELEMENT title (#PCDATA) >
声明一个包含 <apple> 元素或 <orange> 元素的 <fruit> 元素:
<!ELEMENT fruit (apple|orange) >
声明一个必须包含 <author> 元素并且后接一个 <title> 元素的 <book> 元素:
<!ELEMENT book (author,title) >
声明一个必须包含 <body> 元素并且可选择后接一个 <postscript> 元素的 <memo> 元素:
<!ELEMENT memo (body,postscript?) >
声明一个必须包含一个或更多的 <book> 元素的 <catalog> 元素:
<!ELEMENT catalog (book+) >
声明一个可以为空或包含 <rowset> 元素的 <table> 元素:
<!ELEMENT table (rowset*) >