|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: <xs:all> with different elements in any order
At 2007-09-19 18:13 +0530, Mukul Gandhi wrote: > I want to validate an XML instance like following with W3C XML Schema. > ><OBJECTS> > <!-- A & Bs in any order and unbounded. B can be before A also. --> > <A>ddjhfj</A> > <B>hghgh</B> > <!-- more A & Bs --> ></OBJECTS> Sounds like a simple alternation. >I want a Schema like (which is invalid) following. > ><xs:element name="OBJECTS"> > <xs:complexType> > <xs:all> > <xs:element name="A" type="xs:string" maxOccurs="unbounded" /> > <xs:element name="B" type="xs:string" maxOccurs="unbounded" /> > </xs:all> > </xs:complexType> ></xs:element> > >But this is wrong, because in this Schema maxOccurs can be 0 or 1. I'm not sure what you mean by that. Do you mean by trying <xs:all> that it is a requirement to have at least one of each? >Could somebody please suggest a Schema for this requirement. Since you are looking for an unbounded quantity, a simple alternation should work if either is optional in the whole: T:\ftemp2>type mukul.xml <OBJECTS> <!-- A & Bs in any order and unbounded. B can be before A also. --> <A>ddjhfj</A> <B>hghgh</B> <!-- more A & Bs --> </OBJECTS> T:\ftemp2>type mukul.xsd <?xml version="1.0" encoding="US-ASCII"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="OBJECTS"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="A" type="xsd:string"/> <xsd:element name="B" type="xsd:string"/> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> T:\ftemp2>w3cschema mukul.xsd mukul.xml Xerces... No validation errors. Altova... The XML data is valid T:\ftemp2> If, however, you have a requirement that at least one of each are required and can be in any order, then things get a bit more complex: ( A+, B, (A | B)* ) | ( B+, A, (B | A)* ) T:\ftemp2>type mukul.xml <OBJECTS> <!-- A & Bs in any order and unbounded. B can be before A also. --> <B>hghgh</B> <A>ddjhfj</A> <B>hghgh</B> <A>ddjhfj</A> <A>ddjhfj</A> <B>hghgh</B> <B>hghgh</B> <!-- more A & Bs --> </OBJECTS> T:\ftemp2>type mukul.xsd <?xml version="1.0" encoding="US-ASCII"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="OBJECTS"> <xsd:complexType> <xsd:choice> <xsd:sequence> <xsd:element ref="A" maxOccurs="unbounded"/> <xsd:element ref="B"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="A"/> <xsd:element ref="B"/> </xsd:choice> </xsd:sequence> <xsd:sequence> <xsd:element ref="B" maxOccurs="unbounded"/> <xsd:element ref="A"/> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="B"/> <xsd:element ref="A"/> </xsd:choice> </xsd:sequence> </xsd:choice> </xsd:complexType> </xsd:element> <xsd:element name="A" type="xsd:string"/> <xsd:element name="B" type="xsd:string"/> </xsd:schema> T:\ftemp2>w3cschema mukul.xsd mukul.xml Xerces... No validation errors. Altova... The XML data is valid T:\ftemp2> The interleave concept in RELAX-NG would be really helpful here: ( A+ & B+ ) I hope this helps. . . . . . . . . . . .Ken -- Upcoming public training: UBL and code lists Oct 1/5; Madrid Spain World-wide corporate, govt. & user group XML, XSL and UBL training RSS feeds: publicly-available developer resources and training G. Ken Holman mailto:gkholman@C... Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Cancer Awareness Jul'07 http://www.CraneSoftwrights.com/x/bc Legal business disclaimers: http://www.CraneSoftwrights.com/legal
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||






