- From: Pete Cordell <petexmldev@tech-know-ware.com>
- Date: Wed, 7 Mar 2007 13:48:47 -0000
- To: "Guillaume Lebleu" <gl@brixlogic.com>, <xmlschema-dev@w3.org>
I'm not fully sure what you're looking for, but one possibility might be the following approach: <xs:element name="SearchRequest" abstract="true"> <xs:complexType/> </xs:element> <xs:element name="StartDate" type="xs:date"/> <xs:element name="EndDate" type="xs:date"/> <xs:element name="SearchRequestByDate" substitutionGroup="SearchRequest"> <xs:complexType> <xs:complexContent> <xs:extension base="SearchRequest"> <xs:sequence> <xs:element ref="StartDate"/> <xs:element ref="EndDate" minOccurs="0"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> This does mean you would have to pre-define all the permitted search types. If you want users to be able to put together what they like, using a number of predefined building blocks, then I don't think you need to actually use the SearchRequestByDate type (everything is a SearchRequest). In that case it might be simpler to make SearchRequest a choice of permitted search criterion, e.g.: <xs:element name="SearchRequest"> <xs:complexType> <xs:choice maxOccurs="unbounded"> <xs:element ref="StartDate"/> <xs:element ref="EndDate" /> ... </xs:choice> </xs:complexType> </xs:element> Or, if your occurrence constraints are favorable(!), then: <xs:element name="SearchRequest"> <xs:complexType> <xs:all> <xs:element ref="StartDate"/> <xs:element ref="EndDate"/> ... </xs:all> </xs:complexType> </xs:element> HTH, Pete. -- ============================================= Pete Cordell Tech-Know-Ware Ltd for XML to C++ data binding visit http://www.tech-know-ware.com/lmx/ http://www.codalogic.com/lmx/ ============================================= ----- Original Message ----- From: "Guillaume Lebleu" <gl@brixlogic.com> To: <xmlschema-dev@w3.org> Sent: Tuesday, March 06, 2007 7:38 PM Subject: issue with restrictions > > Hello, > > I'm new to this list. I'm having a XSD development issue that relates to > restrictions and I hope this is the right place to ask. > > My context is one where developers can create new messages but they must > follow some pre-defined patterns. For instance, I want all my search > request messages to contain 0 or more search criterias that they can pick > from a list of concrete predefined criterias. > > What I am trying to do is use XSD to enforce these patterns. A sample XSD > is below. When I validate the XSD, I get the error that > SearchRequestByDate is not a valid restriction of SearchRequest. > > Thank you, > > Guillaume > > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> > > <xs:complexType name="SearchRequest" abstract="true"> > <xs:sequence> > <xs:element ref="SelectionCriteria" minOccurs="0" > maxOccurs="unbounded"/> > </xs:sequence> > </xs:complexType> > > <xs:element name="SelectionCriteria" abstract="true"/> > <xs:element name="StartDate" type="xs:string" > substitutionGroup="SelectionCriteria"/> > <xs:element name="EndDate" type="xs:string" > substitutionGroup="SelectionCriteria"/> > <xs:complexType name="SearchRequestByDate"> > <xs:complexContent> > <xs:restriction base="SearchRequest"> > <xs:sequence> > <xs:element ref="StartDate"/> > <xs:element ref="EndDate" minOccurs="0"/> > </xs:sequence> > </xs:restriction> > </xs:complexContent> > </xs:complexType> > </xs:schema> > > > >
Received on Wednesday, 7 March 2007 13:50:36 UTC