2007-2-25 17:32
hinet
3.1.2.3 有顺序的子元素
3.1.2.3 有顺序的子元素
一个元素的各个子元素之间可以以任意顺序出现,也可以强制遵循一定的顺序。
不要求顺序的子元素
考虑下面的DTD定义:
<ELEMENT 联系人(姓名 EMAIL)>
<ELEMENT 姓名(#PCDATA)>
<ELEMENT EMAIL(#PCDATA)>
遵从这个DTD的XML文件可以为:
<联系人>
<姓名>张三
[email]zhang@aaa.com[/email]
同样,下面这个XML文件也是有效的:
<联系人>
[email]zhang@aaa.com[/email]
<姓名>张三
我想大家已经注意到了,由于我们在DTD定义中仅仅用空白符分隔了元素“联系人”的两个子元素,这说明我们并没有严格要求两个元素出现的顺序,因此上面两种写法都是允许的。
要求顺序的子元素
相反,在上面例子中,如果我们使用逗号“,”来分隔两个子元素,那么XML文件中,元素“姓名”就必须出现在元素“EMAIL”前面。也就是说,如果我们把DTD定义为下面的形式:
<ELEMENT 联系人(姓名, EMAIL)>
<ELEMENT 姓名(#PCDATA)>
<ELEMENT EMAIL(#PCDATA)>
那么下面的文件是有效的:
<联系人>
<姓名>张三
[email]zhang@aaa.com[/email]
而下面这个文件不是有效的,因为它把元素“EMAIL”放在了元素“姓名”之前,这是不合规定的:
<联系人>
[email]zhang@aaa.com[/email]
<姓名>张三