[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Use xsd to specify multiple instances of existing element
- From: "Pete Cordell" <petexmldev@codalogic.com>
- To: <xml-dev@lists.xml.org>
- Date: Mon, 22 Sep 2008 14:10:07 +0100
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:complexContent>
<xs:extension base='categoryType'>
...
<xs:complexType name='fishingType'>
<xs:complexContent>
<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'"
type="categoryPrivacyType"/>
<xs:alternative test="@scheme='http://dig.com/fishingType'"
type="categoryFishingType"/>
</xs:element>
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!
HTH,
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
element
>
> 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]