XML认证教程,第 2 部分: Dtd

来源: 作者: 2007-12-01 出处:pcdog.com

java  xml  安全  
上一页 1 2 3 4 5 6 下一页 

重复元素

让我们再把上节的例子作一个小小的改动:

<!ELEMENT 联系人(姓名,EMAIL+)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
 

    让我们看看前面给出的正则表达式的元字符集列表,它说明一个“联系人”元素中必须含有一个“姓名”元素,后面接一个或多个“EMAIL”元素。这样,下面的这段XML 文件是“有效的”。

<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
<EMAIL>zhang@hotmail.com</EMAIL>
<EMAIL>zhang@yahoo.com</EMAIL>
</联系人>
 
那么下面这段XML文件不是有效的,因为它没有“EMAIL”元素,而“+”代表了“一个或多个”。

<联系人>
<姓名>张三</姓名>
</联系人>
 
如果你需要表示“零个或多个”,那么应该使用字符“*”。例如:

<!ELEMENT 联系人(姓名,EMAIL*)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
 

成组元素

子元素可以使用括号并为一组。因此,下面的Dtd片段说明,一个“联系人”元素中可以有一个或多个“姓名/EMAIL”子元素对,并且在每个子元素对中,“姓名”都放在“EMAIL”之前。

<!ELEMENT 联系人(姓名,EMAIL)+>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
 

符合这个Dtd的XML文件可以是:

<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>

<姓名>李四</姓名>
<EMAIL>li@bbb.org</EMAIL>

<姓名>王五</姓名>
<EMAIL>wang@ccc.org</EMAIL>
</联系人>
 

注意,仅仅是因为“+”由括号里面移到括号外面,元素“联系人”的内容就大大不同了。

OR或

号“|”描述了一个OR操作。因此,下面的Dtd片段所规定的XML元素是:所有的 “联系人”元素应该有一个“姓名”子元素,同时,在此之后还应该有一个“电话”或一个“EMAIL”元素,但不能同时有“电话”和“EMAIL”两个元素。

<!ELEMENT 联系人(姓名,(电话|EMAIL))>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT 电话(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>

一个符合上述Dtd定义的“有效的”XML文件的定义应该是:

<联系人>
<姓名>张三</姓名>
<电话>12345678</EMAIL>
</联系人>
 

或者是:

<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@yahoo.com</EMAIL>
</联系人>
 

注意:在一个组中,只允许使用一种连接符(例如“,”或“|”)。因此,象下面这样定义的Dtd是不合法的:<!ELEMENT 联系人(姓名,电话|EMAIL)>

要想使用多种连接符,只有通过创建子组的方式,使用<!ELEMENT 联系人(姓名,(电话|EMAIL))>

可选子元素

字符“?”说明一个子元素是可选的,它可以出现,也可以不出现。因此,在下面的Dtd 中,我们规定,每一个“联系人”都必须有一个“姓名”子元素,同时或者有一个“电话” 子元素,或者有一个“EMAIL”子元素,此外,它还可以包含一个“地址”子元素,也可以不包含这种元素。

<!ELEMENT 联系人(姓名,(电话|EMAIL),地址?)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT 电话(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
<!ELEMENT 地址(街道,城市,省份)>
<!ELEMENT 街道 (#PCDATA)>
<!ELEMENT 城市 (#PCDATA)>
<!ELEMENT 省份 (#PCDATA)>
 

根据这个Dtd描述,下面的XML片段是“有效的”:

<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
<地址>
<街道>五街1234号</街道>
<城市>北京市</城市>
<省份>北京</省份>
</地址>
</联系人>
 

同样,下面这段不包含“地址”元素的XML片段也是“有效的”:

<联系人>
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
</联系人>
 


更多内容请看PCdog.com--Fireworks教程  PPT教程  电脑入门教程专题
上一页 1 2 3 4 5 6 下一页 
上一篇:W3C XML Schema 与文档类型定义
下一篇:解析XML的时候完全忽略DTD