南强小屋 Design By 杰米

有效文档中使用的每个元素都必须在文档的DTD中用元素声明进行声明。element_name可是任何合法的XML名称,content_model(内容模型)指定元素可以或必须包含的子元素以及子元素的顺序。下面具体介绍内容模型的内容。
上节文档类型声明中的每一项都是元素声明,定义了每个元素的约束。元素声明的格式为:
<!ELEMENT element_name (content_model)>

有效文档中使用的每个元素都必须在文档的DTD中用元素声明进行声明。element_name可是任何合法的XML名称,content_model(内容模型)指定元素可以或必须包含的子元素以及子元素的顺序。下面具体介绍内容模型的内容。
本文由(https://www.jb51.net)整理发布!转载请注明出处,谢谢!

    #PCDATA,规定元素只包含已析的字符数据。下面声明指出一个name元素可以包含文本,但不能划分为独立的area_code、number和extension元素:
    <!ELEMENT name (#PCDATA)>

子元素,可指明元素的子元素。下面声明表示name元素必须包含且只包含一个desc元素。
<!ELEMENT name (desc)>

也可用逗号为分隔符,指明多个子元素。并且子元素出现的次序必须按定义时的顺序。如:
<!ELEMENT name (id,desc)>

name元素的id子元素必须在desc子元素前面,否则验证会出错,该文档不是一个有效的XML文档。
下面这个文档是有效的 <name> <id>1</id> <desc>dtd test</desc> </name> 下面这个文档是无效的,顺序颠倒了 <name> <desc>dtd test</desc> <id>1</id> </name> 下面的文档也是无效的,有多余的元素 <name> <id>1</id> <desc>dtd test</desc> <date>2005/01/31</date> </name>

子元素的个数,我们可通过正则表达式来规定子元素的个数。

    ?,允许零个或一个该元素
    *,允许零个或多个该元素
    ,允许一个或多个该元素
    下面我们可利用这些符号规定id子元素必须出现,且只能出现一次,而desc子元素可选。本文由(https://www.jb51.net)整理发布!转载请注明出处,谢谢!
    <!ELEMENT name (id,desc*)>

根据上面的声明,下面的name元素都是有效的。
<name> <id>1</id> <desc>dtd test</desc> </name> <name> <id>2</id> </name> <name> <id>3</id> <desc>dtd test</desc> <desc>another test</desc> </name>

可选项(|),选项是一个参数列表,每个参数间用“|”分隔,代表能且只能选一个子元素。
<!ELEMENT choice (good | bad)>