[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: "Rick Jelliffe" <rjelliffe@allette.com.au>,<xml-dev@lists.xml.org>
- Date: Mon, 22 Sep 2008 15:24:07 +0100
Original Message From: "Rick Jelliffe" <rjelliffe@allette.com.au>
> xsi:type addresses his issue. All it does is say "look what
> I found", with admittedly clever, rococo elaborateness, not "here is what
> you can do".
No need for the attitude. After all, most things in XML schema require
clever, rococo elaborateness!
And rather than directly answering Ian's concern, I was more directly
motivated by answering your comment:
> To make this work, don't you have to define the <entry> element to use
> wildcards? For example (loosely)
by trying to say that you don't need wildcards to make it work.
Fleshing out the XSD a bit more, I get 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:attribute name='scheme' type='xs:string'
fixed='http://dig.com/privacy'/>
<xs:attribute name='term'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='open'/>
<xs:enumeration value='private'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name='fishingType'>
<xs:complexContent>
<xs:extension base='categoryType'>
<xs:attribute name='scheme' type='xs:string'
fixed='http://dig.com/fishingType'/>
<xs:attribute name='term'>
<xs:simpleType>
<xs:restriction base='xs:string'>
<xs:enumeration value='coarse'/>
<xs:enumeration value='open'/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Which, at the category element level, I think does meet Ian's requirements,
_IF_ he his prepared to accept the presence of the xsi:type. Personally I
don't think he can, but I don't know that until I ask him.
It also fails to ensure that a category element of type privacy must be
followed by a category element of type fishingType (wider discussion for
those interested in learning something from the list: you can obviously say
that there must be two category elements within an entry element, but you
can't enforce their types).
Even if it is not something he is not prepared to do, it is a documented
avenue of what does not work, which in engineering can be as important as
documenting what does work!
So, my answer to Ian is you can't exactly do what you want using XSD. There
are some ways you can get close to it, most of which Rick has described.
What I've presented is some discussion material about one of the ways
suggested, and by discussing it it is not implied that that is a proposed
solution.
I am definitely not saying "look at my great clever solution. Aren't I
wonderful?"
Regards,
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 2:33 PM
Subject: Re: [xml-dev] Use xsd to specify multiple instances of existing
element
>
> Pete Cordell wrote:
>> 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'>
>> ...
> But this does not meet Ian's requirement, which was to constrain that the
> first <category> can have some attribute values,
> and the second <category> can have some others. I don't see that xsi:type
> addresses his issue. All it does is say "look what
> I found", with admittedly clever, rococo elaborateness, not "here is what
> you can do".
>
> 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]