- From: George Cristian Bina <george@sync.ro>
- Date: Fri, 23 Jul 2004 15:33:28 +0300
- To: Peter Menzel <peter.menzel@imise.uni-leipzig.de>
- Cc: xmlschema-dev@w3.org
Hi Peter, The following schema will do it. The model is: ( (aa, ((bb, (cc | dd)*) | ((cc | dd)+, bb, (cc | dd)*))) | (bb, ((aa, (cc | dd)*) | ((cc | dd)+, aa, (cc | dd)*))) | ( (cc | dd)+, ( (aa, ((bb, (cc | dd)*) | ((cc | dd)+, bb, (cc | dd)*))) | (bb, ((aa, (cc | dd)*) | ((cc | dd)+, aa, (cc | dd)*))) ) ) ) <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="element"> <xsd:complexType> <xsd:choice> <xsd:sequence> <xsd:element ref="aa"/> <xsd:choice> <xsd:sequence> <xsd:element ref="bb"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> <xsd:element ref="bb"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:element ref="bb"/> <xsd:choice> <xsd:sequence> <xsd:element ref="aa"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> <xsd:element ref="aa"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> <xsd:choice> <xsd:sequence> <xsd:element ref="aa"/> <xsd:choice> <xsd:sequence> <xsd:element ref="bb"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> <xsd:element ref="bb"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:element ref="bb"/> <xsd:choice> <xsd:sequence> <xsd:element ref="aa"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:choice minOccurs="1" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> <xsd:element ref="aa"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="cc"/> <xsd:element ref="dd"/> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="aa"/> <xsd:element name="bb"/> <xsd:element name="cc"/> <xsd:element name="dd"/> </xsd:schema> Hope that helps, George ----------------------------------------------- George Cristian Bina <oXygen/> XML Editor & XSLT Editor/Debugger http://www.oxygenxml.com Peter Menzel wrote: > > Hi all, > > i am working on a xml schema and have the following problem, maybe > somebody can help me. > > I would like to have the follwoing element with content: > > <element> > <aa/> > <cc/> > <bb/> > </element> > > The elements aa and bb are required to be there and they have to occur > exactly once. > Other sub elements of element can occur many times. Especially the order > of the elements is random, so i may not use xsd:sequence. > > My xml schema snippet for this element: > > <xsd:element name='element'> > <xsd:complexType> > <xsd:choice> > <xsd:element ref='dd' minOccurs='0' maxOccurs='unbounded'/> > <xsd:element ref='cc' minOccurs='0' maxOccurs='unbounded'/> > <xsd:element ref='aa' minOccurs='1' maxOccurs="1"/> > <xsd:element ref='bb' minOccurs='1' maxOccurs="1"/> > </xsd:choice> > </xsd:complexType> > </xsd:element> > > Unfortunately this wont work. > xmllint says that the above xml document is not valid with this schema. > > Has anybody any idea concerning this problem? Is it generally possible > to mix elements in a complexType with different minOccurs/maxOccurs ? > > Greetings, Peter >
Received on Friday, 23 July 2004 08:33:16 UTC