[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

  • From: Rick Jelliffe <rjelliffe@a...>
  • To: Ian Mayo <ianmayo@t...>
  • Date: Mon, 22 Sep 2008 19:39:35 +1000

Re:  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]


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3

Stylus Studio has published XML-DEV in RSS and ATOM formats, enabling users to easily subcribe to the list from their preferred news reader application.

Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website. they were not included by the author in the initial post. To view the content without the Sponsor Links please click here.

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.