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

另请参见

概念

ATTLIST (Attribute List)
ENTITY
NOTATION