[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Confusing XSD sequence/group.
Where you have <xsd:element name="MEMBER"/> in OBJECT, you probably want to do <xsd:element ref="MEMBER"/> (i.e. name -> ref.) Otherwise the type of the MEMBER element is the default type which is xs:anyType and it will accept any content. Similarly your <xsd:element name="NULL"/> definition might not be giving you what you want. Based on the name I imagine you want <xsd:element name="NULL"><xsd:complexType/></xsd:element> to allow <NULL/> only. HTH, Pete Cordell Codalogic Ltd Interface XML to C++ the easy way using C++ XML data binding to convert XSD schemas to C++ classes. Visit http://codalogic.com/lmx/ or http://www.xml2cpp.com for more info ----- Original Message ----- From: "David Lee" <dlee@calldei.com> To: <xml-dev@lists.xml.org> Sent: Sunday, December 19, 2010 10:34 PM Subject: Confusing XSD sequence/group. >I have an XSD with this group > > > > <xsd:group name="value"> > <xsd:choice> > <xsd:element name="STRING"/> > <xsd:element name="NUMBER"/> > <xsd:element name="NULL"/> > <xsd:element name="OBJECT"/> > <xsd:element name="ARRAY"/> > > </xsd:choice> > </xsd:group> > > > > > > I then use it in this element > > > > <xsd:element name="MEMBER"> > <xsd:complexType> > <xsd:sequence minOccurs="1" maxOccurs="1"> > <xsd:group ref="value" minOccurs="1" maxOccurs="1"/> > </xsd:sequence> > <xsd:attribute name="name" use="required"/> > </xsd:complexType> > </xsd:element> > > > > > > > > ---------------- > > > > > > I validate it against a document which has this fragment > > <MEMBER name="_text"> > <STRING> </STRING> > <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> <STRING> > </STRING> > > </MEMBER> > > > > > > > > It validates as successful in every schema validator I've tried (including > Saxon, XSV, MS XML). > > > > What am I missing ??? > > I want to have MEBMER element contain One and Only One element of > STRING|NUMBER|NULL|OBJECT|ARRAY > > Thanks for any suggestions ! > > > > > > Here's the full schema > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > <xsd:element name="OBJECT"> > <xsd:complexType> > <xsd:sequence minOccurs="0" maxOccurs="unbounded"> > <xsd:element name="MEMBER"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="MEMBER"> > <xsd:complexType> > <xsd:sequence minOccurs="1" maxOccurs="1"> > <xsd:group ref="value" minOccurs="1" maxOccurs="1"/> > </xsd:sequence> > <xsd:attribute name="name" use="required"/> > </xsd:complexType> > </xsd:element> > <xsd:element name="ARRAY"> > <xsd:complexType> > <xsd:sequence maxOccurs="unbounded" minOccurs="0"> > <xsd:group ref="value"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > <xsd:element name="STRING"> > <xsd:simpleType> > <xsd:restriction base="xsd:string"/> > </xsd:simpleType> > </xsd:element> > <xsd:element name="NUMBER"> > <xsd:simpleType> > > <xsd:restriction base="xsd:double"/> > > </xsd:simpleType> > </xsd:element> > <xsd:element name="NULL"/> > <xsd:group name="value"> > <xsd:choice> > <xsd:element name="STRING"/> > <xsd:element name="NUMBER"/> > <xsd:element name="NULL"/> > <xsd:element name="OBJECT"/> > <xsd:element name="ARRAY"/> > > </xsd:choice> > </xsd:group> > > > </xsd:schema> > > > > > > > > > > > > ---------------------------------------- > > David A. Lee > > <mailto:dlee@calldei.com> dlee@calldei.com > > <http://www.xmlsh.org> http://www.xmlsh.org > > > >
[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
|