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*) >