W3C home > Mailing lists > Public > xmlschema-dev@w3.org > August 2007

Re: Dependencies between attributes and elements

From: Andy Den Tandt <andydt@enfocus.be>
Date: Tue, 07 Aug 2007 12:45:41 +0200
Message-ID: <46B84D55.40008@enfocus.be>
To: Joćo Cruz Morais <napalm@spiderfish.net>
CC: Michael Kay <mike@saxonica.com>, xmlschema-dev@w3.org


I'm struggling with a similar issue. As I understand it, you can't do it 
with a custom attribute, but you can use xsi:type provided you 
(manually) define all the types you want to support in your schema.

<vector xsi:type="intvector"> <!-- and in schema define complextypes intvector, stringvector, numbervector, ... and even intpair, inttriple, ... -->
  <value>2</value> <!-- if not int throws a error -->
</vector>

But it has drawbacks: you have to define all of the types and you have 
to change the XML to use xsi:type instead of your own attribute.

Kind regards,

Andy Den Tandt




Joćo Cruz Morais wrote:
> Thanks for your answer Michael, I think I'll deal with the document
> structure with XSD and do the remaining validation in my java app.
> One more thing though:
>
> Right now I'm using an element called int-vector to specify a list of
> int values. Is it possible to make that element go away and replace it
> for a generic one, with an attribute specifying the vector type? In
> other words is it possible to establish a relationship between the
> value of an element attribute and his children?
> Example:
>
> <vector type="int">
>   <value>2</value> <!-- if not int throws a error -->
> </vector>
>
> Thanks a lot,
> Joćo
>
> On 06/08/07, Michael Kay <mike@saxonica.com> wrote:
>   
>>> Given this simple xml:
>>>
>>> <vector size="2">
>>>   <value>1</value>
>>>   <value>3</value>
>>> </vector>
>>>
>>> Is there a way to validate the number of <value> elements
>>> according to the vector size attribute?
>>> I'm tempted to say no, so should I make this kind of
>>> validation inside my program?
>>>       
>> XML Schema 1.1 will add this capability using assertions:
>>
>> <xs:assert test="count(value) = @size"/>
>>
>> Meanwhile you have to resort to other approaches, e.g. your own validation
>> code in XSLT, or Schematron.
>>
>> Michael Kay
>> http://www.saxonica.com/
>>
>>
>>     
>
>
>   
Received on Tuesday, 7 August 2007 10:46:40 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:00 GMT