- From: Robert Koberg <rob@koberg.com>
- Date: Fri, 23 Jul 2004 05:40:11 -0700
- To: George Cristian Bina <george@sync.ro>
- Cc: Peter Menzel <peter.menzel@imise.uni-leipzig.de>, xmlschema-dev@w3.org
Just curious: Could something like this work? <xsd:element name='element'> <xsd:complexType> <xsd:choice minOccurs='0' maxOccurs='unbounded'> <xsd:element ref='dd'/> <xsd:element ref='cc'/> <xsd:element ref='aa' minOccurs='1' maxOccurs="1"/> <xsd:element ref='bb' minOccurs='1' maxOccurs="1"/> </xsd:choice> </xsd:complexType> </xsd:element> In other words, can you override the choice's min/max at the element level? best, -Rob George Cristian Bina wrote: > > 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:42:23 UTC