3.1.2.7 可选子元素
字符“?”说明一个子元素是可选的,它可以出现,也可以不出现。因此,在下面的DTD中,我们规定,每一个“联系人”都必须有一个“姓名”子元素,同时或者有一个“电话”子元素,或者有一个“EMAIL”子元素,此外,它还可以包含一个“地址”子元素,也可以不包含这种元素。
<ELEMENT 联系人(姓名,(电话│EMAIL),地址?)>
<ELEMENT 姓名(#PCDATA)>
<ELEMENT 电话(#PCDATA)>
<ELEMENT EMAIL(#PCDATA)>
<ELEMENT 地址(街道,城市,省份)>
<ELEMENT 街道 (#PCDATA)>
<ELEMENT 城市 (#PCDATA)>
<ELEMENT 省份 (#PCDATA)>
根据这个DTD描述,下面的XML片段是“有效的”:
<联系人>
<姓名>张三
zhang@aaa.com <地址>
<街道>五街1234号
<城市>北京市
<省份>北京
同样,下面这段不包含“地址”元素的XML片段也是“有效的”:
<联系人>
<姓名>张三
zhang@aaa.com