- From: George Cristian Bina <george@oxygenxml.com>
- Date: Thu, 17 May 2007 17:43:22 +0300
- To: Michael Kay <mike@saxonica.com>
- Cc: 'Jan Vosloo' <jan.vosloo@mxit.com>, xmlschema-dev@w3.org
Here it is an working example of XML Schema with embedded ISO Schematron
rules that allow the display attribute only if type is 1:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="test"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="test">
<xs:annotation>
<xs:appinfo>
<pattern xmlns="http://purl.oclc.org/dsdl/schematron"
id="testDisplay">
<rule context="test">
<assert test="(@type!='1' and not(@display)) or
@type='1'">The 'display' atribute can be used only if the value for the
'type' attribute is 1!</assert>
</rule></pattern>
</xs:appinfo>
</xs:annotation>
<xs:complexType>
<xs:attribute name="display" type="xs:NCName" use="optional"/>
<xs:attribute name="type" use="required" type="xs:integer"/>
<xs:attribute name="value" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:schema>
Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Michael Kay wrote:
> You can't: it's a classic example of a co-occurrence constraint, which XML
> Schema 1.0 doesn't support. Wait for 1.1, or use Relax NG or schematron, or
> change the attribute name from "type" to "xsi:type".
>
> The content model for an element can only depend on the element name and the
> value of its xsi:type attribute.
>
> Michael Kay
> http://www.saxonica.com/
>
>
> _____
>
> From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] On
> Behalf Of Jan Vosloo
> Sent: 17 May 2007 13:06
> To: xmlschema-dev@w3.org
> Subject: Attribute use depending on another attribute value
>
>
> _____
>
> Click here to view our e-mail legal notice:
> http://www.mxit.co.za/pdfs/mxit_legal.pdf or call: +27 21 888 7000
>
> _____
>
>
> Hi,
>
> I just want to know how I would do the following:
>
>
>
> <root>
>
> <test type="1" value="1" display="disp"/>
>
> <test type="2" value="100" />
>
> </root>
>
>
>
> I want the 'display' attribute to be available for use depending on what the
> value for the 'type' attribute is.
>
>
>
> How can I do this in a XSD (XML schema)??
>
>
>
> Thanks you in advance
>
>
>
>
>
> Jan Vosloo | Developer
>
>
> Tel: +27 21 888 7000 | Fax: +27 21 883 8123
>
>
>
>
>
>
>
Received on Thursday, 17 May 2007 14:43:39 UTC