[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Use xsd to specify multiple instances of existing element
> So in order to get your constraint you have three choices: > > 1) Adopt RELAX NG instead of XSD. > 2) Adopt Schematron as well as (or instead of XSD) > 3) Adopt XSD 1.1 (if you can find an implementation) and use their > assertions. there's a 4th I think: 4) annotate the category elements with an xsi:type: <category xsi:type="privacy" scheme='http://dig.com/privacy' term='private'/> <category xsi:type="fishingType" scheme='http://dig.com/fishingType' term='coarse'/> ...then just define the types "privacy" and "fishingType" in your schema. This will work with 1.0 but depending on your situation could be a pain to set the xsi:type on the elements (moving entirely to Relax or using XSD+Schematron could be considered a bigger pain). On the positive side, when you switch to 1.1 you can drop the xsi:type attributes and then switch between alternative type definitions based on the value of the term attribute... (seperate type definitions are better than assertions I think) The XSD processor from Saxonica implements the current 1.1 spec so you could just start using that now. > In the case of the XSD 1.1, I think the assertions will have to be > constraints on the <entry> element, for example > <xsd:assert test="category[1]/@term='open' or category[1]/@term='private' > "/> > ********* <xsd:assert test="category[2]/@term='coarse' or > category[2]/@term='open' "/> > just to be a pedant you can do: <xsd:assert test="category[1]/@term = ('open', 'private')"/> <xsd:assert test="category[2]/@term = ('coarse', 'open') "/> ...which is a little nicer. -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
[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
|