- From: George Cristian Bina <george@oxygenxml.com>
- Date: Mon, 07 Aug 2006 16:49:17 +0300
- To: Sandra Martinez <sandra.martinez@nist.gov>
- Cc: xmlschema-dev@w3.org
Hi Sandra, This is not supported by XML Schema. What you can do is to define a more relaxed content model (for instance a zero or more choice of all the possible elements) and add Schematron embedded rules to check the occurrences constraints for each child element. You can find an example schema below. This allows any number of BBB and CCC elements to be interleaved with zero or one EEE elements and with one or more DDD elements. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="AAA"> <xsd:annotation> <xsd:appinfo> <pattern xmlns="http://www.ascc.net/xml/schematron" name="testOccurences"> <rule context="AAA"> <assert test="count(DDD)>0">DDD should appear one or more times</assert> <assert test="count(EEE)<2">EEE should appear at most once</assert> </rule> </pattern> </xsd:appinfo> </xsd:annotation> <xsd:complexType mixed="false"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="BBB" type="xsd:string"/> <xsd:element name="CCC" type="xsd:string"/> <xsd:element name="DDD" type="xsd:string"/> <xsd:element name="EEE" type="xsd:string"/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> Best Regards, George --------------------------------------------------------------------- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com Sandra Martinez wrote: > > Could someone provide any ideas or work-around on the following issue: > > I am trying to design a Xschema that allows an unordered list of > elements where some of the elements are unbounded, have occurrences of 0 > or 1, or 1 to unbounded. Based on the XSchema constraint that > <xsd:all> does not allowed 0..unbounded elements, I decided to used the > following work-around which works for an unordered list of unbounded > elements but it does not work for the other two cases. The question is: > How can I modified this XSxhema to allow an additional element child > <AAA> whose occurrence is 0 or 1 and that could also be placed in any > order (unordered) and also allow for an additional elemen <DDD> whose > occurance is one to unbounded and that could also be placed in any order > (unordered): > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <xsd:element name="AAA"> > <xsd:complexType mixed="false"> > <xsd:sequence minOccurs="0" > maxOccurs="unbounded"> > <xsd:element name="BBB" > type="xsd:string" minOccurs="0"/> > <xsd:element name="CCC" > type="xsd:string" minOccurs="0"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > </xsd:schema> > > > > valid XML instance 1: > > <AAA> > <BBB>222</BBB> > <CCC>ZZZ</CCC> > </AAA> > > valid XML instance 2: > > <AAA> > <CCC>ZZZ</CCC> > <BBB>222</BBB> > </AAA> > > valid XML instance 3: > > <AAA> > <BBB>222</BBB> > <CCC>ZZZ</CCC> > <BBB>222</BBB> > </AAA> > > valid XML instance 4: > > <AAA> > <BBB>222</BBB> > </AAA> > > > Thank you in advanced, > > Sandra > > > Sandra I. Martinez > National Institute of Standards and Technology > 100 Bureau Drive, Stop 8970, > Gaithersburg, Md. 20899 > > (301) 975-3579 > sandra.martinez@nist.gov > > >
Received on Monday, 7 August 2006 13:46:45 UTC