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

I think what Andrew is suggesting is something like:

<xs:element name='category' type='categoryType' />

<xs:complexType name='categoryType' abstract='true'>

<xs:complexType name='privacy'>
        <xs:extension base='categoryType'>

<xs:complexType name='fishingType'>
        <xs:extension base='categoryType'>

This obviously has the problem of requiring the use of xsi:type.  It does
point to XSD1.1's xs:alternative construct being a useful way to go though.
Based on the example in the latest draft just before section 3.3.3, you'd
have something like:

<xs:element name="category" type="categoryType">
  <xs:alternative test="@scheme='http://dig.com/privacy'"
  <xs:alternative test="@scheme='http://dig.com/fishingType'"

Hopefully someone will correct me if I'm wrong.

XSD 1.1 is not even new stuff yet(!), so I guess that is of little help!


Pete Cordell
Codalogic Ltd
Interface XML to C++ the easy way using XML C++
data binding to convert XSD schemas to C++ classes.
Visit http://www.codalogic.com/lmx/ for more info

----- Original Message ----- 
From: "Rick Jelliffe" <rjelliffe@allette.com.au>
To: <xml-dev@lists.xml.org>
Sent: Monday, September 22, 2008 11:40 AM
Subject: Re: [xml-dev] Use xsd to specify multiple instances of existing 

> Andrew Welch wrote:
>>> 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.
> I suspect that will not work, but it certainly may be worth a try.
> To make this work, don't you have to define the <entry> element to use 
> wildcards? For example (loosely)
> <element name="entry" >
>      <sequence>
>          <element name="category"> <!-- open category -->
>     <xs:any namespace="##targetNamespace"/>
> And if you wanted to make the first optional, alarm bells go off that many 
> XSD processors are likely to disallow it (due to quasi UPA implementation, 
> regardless of the standard).
> So you lose the ability to say "the second element must be a category" 
> while gaining the ability to override the schema in the instance.  The 
> trouble with this use of xsi:type is that it really doesn't give you 
> anything in terms of stricter validation or information
> modeling: it lets you get a validation result in spite of the modeling!
> Cheers
> Rick Jelliffe
> _______________________________________________________________________
> XML-DEV is a publicly archived, unmoderated list hosted by OASIS
> to support XML implementation and development. To minimize
> spam in the archives, you must subscribe before posting.
> [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/
> Or unsubscribe: xml-dev-unsubscribe@lists.xml.org
> subscribe: xml-dev-subscribe@lists.xml.org
> List archive: http://lists.xml.org/archives/xml-dev/
> List Guidelines: http://www.oasis-open.org/maillists/guidelines.php

[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