Altova Mailing List Archives>Archive Index >xmlschema-dev Archive Home >Recent entries >Thread Prev - xml schema question [Thread Next] Re: xml schema questionTo: Peter Menzel <peter.menzel@-----.-----------.--> Date: 7/23/2004 2:33:00 PM Hi Peter, > 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. This is one of the areas where XML Schema isn't very helpful because the kind of model group that allows elements to occur in any order (<xs:all>) only allows those elements to be optional or appear exactly once. The closest that you can get is to use a content model like: (otherElements*, ((aa, otherElements*, bb) | (bb, otherElements*, aa)), otherElements*) Use a model group to define otherElements. For example: <xs:group name="otherElements"> <xs:choice> <xs:element ref="cc" /> <xs:element ref="dd" /> </xs:choice> </xs:group> <xs:element name="element"> <xs:complexType> <xs:sequence> <xs:group ref="otherElements" minOccurs="0" maxOccurs="unbounded" /> <xs:choice> <xs:sequence> <xs:element ref="aa" /> <xs:group ref="otherElements" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="bb" /> </xs:sequence> <xs:sequence> <xs:element ref="bb" /> <xs:group ref="otherElements" minOccurs="0" maxOccurs="unbounded" /> <xs:element ref="aa" /> </xs:sequence> </xs:choice> <xs:group ref="otherElements" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> It's much easier in RELAX NG, in which you can use interleave as follows: <element name="element"> <interleave> <element name="aa" /> <element name="bb" /> <zeroOrMore> <element name="cc" /> </zeroOrMore> <zeroOrMore> <element name="dd" /> </zeroOrMore> </interleave> </element> Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/ From rob@k... Fri Jul 23 08:42:23 2004 Return-Path: <rob@k...> X-Original-To: xmlschema-dev@l | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
