W3C home > Mailing lists > Public > www-ws-desc@w3.org > August 2006

RE: XML Schema requires a type in addition to name to identify an element

From: <matthew.d.rawlings@jpmchase.com>
Date: Thu, 31 Aug 2006 09:51:15 +0100
To: www-ws-desc@w3.org
Cc: stabet@ruleml.org, "Steve Ross-Talbot" <steve@pi4tech.com>, ylafon@w3.org
Message-ID: <OF37462E66.04D87324-ON802571DB.002E976C-802571DB.0030A2F1@jpmchase.com>
Jonathan - 

In answer to your assertion: Close study of XML Schema shows that the 
proposal does not add redundant information. xsi:type allows the type of 
an element to be changed in the XML instance document independently of 
what the XML Schema states the type of the element is.

In answer to your question: The precise problem "is that the name of an 
element is not sufficient to identify the message type when using XML 
Schema".

The purpose of the WSDL message is to identify the type of the message. It 
is not always possible to identify the type of the message from the root 
element name, because the type may be overridden by an xsi:type 
declaration.

Example XML Schema schema with an a universal abstract root node of 
"transport":
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault
="qualified" attributeFormDefault="unqualified">
        <xs:element name="transport" type="Vehicle" abstract="false"/>
        <xs:complexType name="Vehicle" abstract="true"/>
        <xs:complexType name="Bicycle">
                <xs:complexContent>
                        <xs:extension base="Vehicle">
                                <xs:sequence>
                                        <xs:element name="wheel" minOccurs
="2" maxOccurs="2"/>
                                        <xs:element name="colour"/>
                                </xs:sequence>
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
        <xs:complexType name="Car">
                <xs:complexContent>
                        <xs:extension base="Vehicle">
                                <xs:sequence>
                                        <xs:element name="wheel" minOccurs
="4" maxOccurs="4"/>
                                        <xs:element name="fuel"/>
                                </xs:sequence>
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
        <xs:complexType name="Aeroplane">
                <xs:complexContent>
                        <xs:extension base="Vehicle">
                                <xs:sequence>
                                        <xs:element name="wings"/>
                                        <xs:element name="configuration"/>
                                </xs:sequence>
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
        <xs:complexType name="Horse">
                <xs:complexContent>
                        <xs:extension base="Vehicle">
                                <xs:sequence>
                                        <xs:element name="colour"/>
                                </xs:sequence>
                        </xs:extension>
                </xs:complexContent>
        </xs:complexType>
</xs:schema>

First example XML instance "Tiger Moth" showing the use of xsi:type:
<?xml version="1.0" encoding="UTF-8"?>
<transport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="Vehicles.xsd" xsi:type="Aeroplane">
        <wings>4</wings>
        <configuration>differential aileron control setup</configuration>
</transport>

Second example XML instance "Trigger" showing the use of xsi:type:
<?xml version="1.0" encoding="UTF-8"?>
<transport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="Vehicles.xsd" xsi:type="Horse">
        <colour>Palomino</colour>
</transport>

The importance of the example is that both Tiger Moth and Trigger have the 
same root element but different types. Tiger Moth has a root element of 
"transport" which has a type of "Aeroplane", whereas Trigger has a root 
element of "transport" but a type of "Horse".

The universal root element pattern is common in schema used for messaging. 
Until the type of the element can be identified then WSDL 2.0 will not 
work with the existing industry standard schema that use xsi:type.

Matthew Rawlings
+44 791 539 7824




"Jonathan Marsh" <jmarsh@microsoft.com>
30/08/2006 23:20
 
        To:     <matthew.d.rawlings@jpmchase.com>, <www-ws-desc@w3.org>
        cc:     <ylafon@w3.org>, "Steve Ross-Talbot" <steve@pi4tech.com>, 
<stabet@ruleml.org>
        Subject:        RE: XML Schema requires a type in addition to name 
to identify an element


What precisely is the problem?  Is it that you can’t constrain the precise 
form of the flexible data format?  Isn’t that unconstrainability the 
reason to use the flexible format in the first place?  I’d like more 
detail on what your type attribute would actually mean/do.  Especially 
your modifications to the primer example, which appear only to add 
redundant information (and therefore a possibility of error) to the WSDL.
 

Received on Thursday, 31 August 2006 08:51:53 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:41 GMT