- 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