[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
Hi Ken / George, Thanks for the answer. The following Schema meets my requirement. <xs:element name="OBJECTS"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="A" type="xs:string"/> <xs:element name="B" type="xs:string"/> </xs:choice> </xs:complexType> </xs:element> On 9/19/07, G. Ken Holman <gkholman@c...> wrote: > 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 -- Regards, Mukul Gandhi
[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
|