- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Mon, 30 Jun 2003 09:52:15 +0100
- To: "Simon Cox" <Simon.Cox@csiro.au>
- CC: xmlschema-dev@w3.org, "Clemens Portele" <portele@interactive-instruments.de>
Hi Simon, > Re: Re-using XSD schema-for-schemasIn simpleType derivation-by > restriction, is it legal to apply both enumeration and pattern > constraints in the same derivation step? Yes, that's fine, but it means something different from what I think you think it means. The example you give: > <simpleType name="DrillCodeType"> > <restriction base="string"> > <enumeration value="RAB"/> > <enumeration value="RC"/> > <enumeration value="DD"/> > <enumeration value="DD-HQ"/> > <enumeration value="DD-NQ"/> > <pattern value="other:\w{2,}"/> > </restriction> > </simpleType> means that values of the DrillCodeType must be one of 'RAB', 'RC', 'DD', 'DD-HQ' or 'DD-NQ' *and* must match the regular expression 'other:\w{2,}'. Since none of the enumerated values match the regular expression, you end up with a type with no legal values (which isn't good news). If you want to say that DrillCodeType can be *either* one of the enumerated values *or* match the pattern, then it needs to be a union type: <simpleType name="DrillCodeType"> <union> <simpleType> <restriction base="string"> <enumeration value="RAB"/> <enumeration value="RC"/> <enumeration value="DD"/> <enumeration value="DD-HQ"/> <enumeration value="DD-NQ"/> </restriction> </simpleType> <simpleType> <restriction base="string"> <pattern value="other:\w{2,}"/> </restriction> </simpleType> </restriction> </simpleType> You could alternatively create a type that allowed these values using only pattern facets: <simpleType name="DrillCodeType"> <restriction base="string"> <pattern value="RAB"/> <pattern value="RC"/> <pattern value="DD"/> <pattern value="DD-HQ"/> <pattern value="DD-NQ"/> <pattern value="other:\w{2,}"/> </restriction> </simpleType> but if you were using this schema with applications that, for example, prompt the user with the allowed values, then it's better to use enumerated values. > If yes, is it still OK if the pattern used for a restiction of > simpleContent in a complexType definition. I'm not sure what you're asking here. You can use the pattern facet however the simple type that you're defining is used. Cheers, Jeni --- Jeni Tennison http://www.jenitennison.com/
Received on Monday, 30 June 2003 04:52:28 UTC