conditional validation based on an attribute

This should cover W3C XML Schema, Relax NG and DTD related problems.
RobertB
Posts: 2
Joined: Mon Mar 27, 2006 11:34 pm

conditional validation based on an attribute

Post by RobertB » Mon Mar 27, 2006 11:37 pm

Hi,

Does anybody know of an easy way in a XSD to have a validation based on an attribute from the parent node ?

My XML:
....
<product no="218">
<part type="é" />
</product>
<product no="205">
<participant>N</participant>
<part type="é">
<nb>1</nb>
</part>
</product>
...

In the XSD:
...
<xs:element name="participant" minOccurs="0" maxOccurs="1">
...
<xs:element name="part" minOccurs="1" maxOccurs="12">

The tag participant can only occur if the product no is 205, and the maxOccurs of product no 218 is 12 where is really is 10 for product no 205.

How can I do this ? I really need both to be under the "product tag", so I cannot change its name.

Thank's for help !

george
Site Admin
Posts: 2102
Joined: Thu Jan 09, 2003 2:58 pm

Post by george » Tue Mar 28, 2006 6:34 am

Hi Robert,

What you want is called cooccurence constraint and XML Schema does not support this. You can use Schematron embedded rules inside XML Schema that oXygen supports to check for your constraints or check them at application level.
See http://www.oxygenxml.com/forum/ftopic1664.html#5297 for a similar example, you have there an XML Schema with schematron embedded rules.

Best Regards,
George

RobertB
Posts: 2
Joined: Mon Mar 27, 2006 11:34 pm

To George

Post by RobertB » Tue Mar 28, 2006 5:01 pm

Thank's for your time, this is what I thought !

Robert

Post Reply