OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] Use xsd to specify multiple instances of existing element

Ian Mayo wrote:
> Hi all,
> I'm trying to extend an existing schema.  The existing schema provides 
> a Category element that takes a 'term' and a 'scheme' (yes, it's an 
> xsd attempt at an Atom schema).  In my schema extension I'd like to 
> specify that there will be two Category elements, one using a scheme 
> of 'http://www.dig.com/privacy' that takes a term attribute of 'open' 
> or 'private', and the second category element will take a scheme of 
> 'http://www.dig.com/fishingType', taking a term attribute of either 
> 'coarse' or 'open'.
> Now, is it possible for an xsd schema to specify that these two 
> elements must be present?  I can see how to mandate the presence of 
> two different elements, but these represent the same element but with 
> different attribute combinations.
There is a rule in XML Schemas called "** Element Declarations 
Consistent"*  which says that elements in the same
content model must have the same declaration.   (The proposed XSD 1.1 
keeps this constraint and clarifies it is the
effective definition, not merely having the same references.)

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 

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' "/>

If you need this now and cannot move to RELAX NG, you may be better off 
adopting Schematron to augment XSD rather than waiting for XSD 1.1.  
There is code around to support Schematron embedded in XSDs, for example.

Rick Jelliffe

* ********* 

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS