[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: "Andrew Welch" <andrew.j.welch@g...>
  • To: "Rick Jelliffe" <rjelliffe@a...>
  • Date: Mon, 22 Sep 2008 10:58:51 +0100

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!

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.
Email
First Name
Last Name
Company
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.