QQRead:http://www.qqread.com/xml-soap/k291093.html
<联系人>
<姓名>张三</姓名>
<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>
</联系人>
更多内容请看Cisco认证体系专题、XML详解、ASP.NET教程专题,或进入讨论组讨论。
重复元素
让我们再把上节的例子作一个小小的改动:
<!ELEMENT 联系人(姓名,EMAIL+)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
<联系人>
<姓名>张三</姓名>
<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>
</联系人>
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Cisco认证体系专题 (3146篇文章)
- XML详解 (1531篇文章)
- ASP.NET教程 (8343篇文章)
- FreeBSD使用教程 (6512篇文章)
- XHTML 代码规范 (530次浏览)
- XML之CSS和XSL精解(1) (314次浏览)
- 利用Digester把XML转换成为Java对象 (143次浏览)
- XML SOAP应用简介 (131次浏览)
- W3C XML Schema 与文档类型定义 (116次浏览)
- XML、DataSet、DataGrid结合写成广告管理程 (109次浏览)
- dotText源码阅读(4)--DTO和数据访问 (108次浏览)
- Publishing Pages with PUT (65次浏览)
- 如何用MSXML2操作XML配置文件 (14次浏览)



