以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  如何实现<xsd:all>标签下的<xsd:element maxOccuse = "unbounded">相同语义  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=13071)


--  作者:toptomcn
--  发布时间:12/28/2004 7:48:00 PM

--  如何实现<xsd:all>标签下的<xsd:element maxOccuse = "unbounded">相同语义
有时候,我们希望有以下的xml结构
<book>
<author>111<\author>
<author>333<\author>
<name>dfljdf<\name>
<\book>
其中<name>必须存在,且只有一个,而<author>是0个或多个
且这两个标签的顺序可以随意
这样<xsd:sequence>不支持<xsd:all>也不支持,怎么办??
怎样编写我所需要的xsd??
--  作者:doubleG
--  发布时间:12/30/2004 9:13:00 AM

--  
以前我记得我回答过这个问题,你可以在本版找一下,其实就是用<xsd:choice/>含有你那两个元素,并把它作为一个complextype,然后使它unbound就可以了
--  作者:toptomcn
--  发布时间:12/31/2004 11:27:00 AM

--  
但是这样没有办法控制<name>必须存在,且只有一个啊
--  作者:doubleG
--  发布时间:12/31/2004 3:41:00 PM

--  
那更简单了,呵呵这样的结构(我拿正则表达式说明):
一个xsd:sequence中这样的顺序——author*name{1}author*不就行了。就是三个元素组成一个sequence,author打头,可以出现0次或无限次,紧接着name,有且只有一个,然后再跟着一个author,也是出现0次或无限次。OK?



--  作者:toptomcn
--  发布时间:1/10/2005 5:11:00 PM

--  
你这样的写法只能对两个子元素有效,加入一个<Time>,其规则同<Name>一样,就无法处理了。
--  作者:doubleG
--  发布时间:1/10/2005 5:13:00 PM

--  
那是啊 只好把你能枚举的都列出来喽,你的需求到底是怎么样的阿?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
4,787.109ms