W3C home > Mailing lists > Public > xmlschema-dev@w3.org > December 2002

Re: defining the complex type of an element depending on the value of an attribute

From: Bob Schloss <rschloss@us.ibm.com>
Date: Mon, 2 Dec 2002 15:31:41 -0500
To: Ernesto Wandeler <ernesto@wandeler.ch>
Cc: xmlschema-dev@w3.org
Message-ID: <OFAC4542D8.70EE03AC-ON85256C83.0070741E-85256C83.0070C3D1@us.ibm.com>

XML Schema 1.0 does not permit this to be specified.

It has been requested by several people as a possible feature for XML
Schema 2.x but the W3C XML Schema WG hasn't published their thoughts on
priorities for 2.x as of now.

There are technologies, such as Schematron, which could be used as an
augmentation to validation and could express this.

In Schema 1.0, there is one special attribute, called xsi:type which can be
used for this, but then the value of that attribute must be the actual type


Bob Schloss
manager, XML/XSL Transformational Systems - Extensible Technologies
IBM Thomas J. Watson Research Center
Yorktown Heights, New York, USA

                      Ernesto Wandeler                                                                                                
                      <ernesto@wandeler        To:       xmlschema-dev@w3.org                                                         
                      .ch>                     cc:                                                                                    
                      Sent by:                 Subject:  defining the complex type of an element depending on the value of  an        
                      xmlschema-dev-req         attribute                                                                             
                      12/02/2002 01:23                                                                                                


i am currently defining an XML Schema for a programming language which
is represented in XML and which was already used for some time without
any DTD or XML Schema.

now i would like to know whether it is possible to define the
complexType of an element depending on the value of an attribute of the

for example i have an element named <Expr> with an attribute named
"kind" and if "kind" equals "UnaryOp" then it must contain one <Op>
element and one <Expr> element. but if "kind" equals "BinaryOp" then it
must contain one <Expr> element followed by any number of <Op> and
<Expr> comibinations.

the XML could look for example like this:

<Expr kind="BinOpSeq">
             <Expr kind="UnaryOp">
                         <Op name="dom"/>
                         <Expr kind="Var" name="a"/>
             <Op name="!="/>
             <Expr kind="Set"/>
             <Op name="or"/>
             <Expr kind="UnaryOp">
                         <Op name="dom"/>
                         <Expr kind="Var" name="s"/>
             <Op name="!="/>
             <Expr kind="Set"/>

i think i could use a number of complexTypes inside a choice element but
then how could i link the choice to the attribute value of the parent

thank you very much for any help!


Ernesto Wandeler

Department of Electrical Engineering and Computer Science
University of California at Berkeley
545M Cory Hall
Berkeley, CA 94720-1770

Work:   +1 510 642 6873
Home:   +1 510 898 1565
Mobile: +41 76 349 4972
E-Mail: ernesto@wandeler.ch
Received on Monday, 2 December 2002 15:31:51 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:07 UTC