W3C home > Mailing lists > Public > xmlschema-dev@w3.org > January 2003

Re: all group

From: Jeni Tennison <jeni@jenitennison.com>
Date: Fri, 3 Jan 2003 01:46:50 +0000
Message-ID: <1017922702.20030103014650@jenitennison.com>
To: "Avin Patel" <vze49rz3@verizon.net>
CC: "xmlschema" <xmlschema-dev@w3.org>

Hi Avin,

> What is difference between following 2 schemas:
> 1)
>  <xsd:complexType name="Type1">
>     <xsd:all>
>        <xsd:element name="elem1" type="xsd:integer"/>
>        <xsd:element name="elem2" type="Type2"/>
>    </xsd:all>
>  </xsd:complexType>
>
>  <xsd:complexType name="Type2">
>    <xsd:all>
>         <xsd:element name="elem1" type="xsd:integer"/>
>         <xsd:element name="elem2" type="xsd:boolean"/>
>    </xsd:all>
>  </xsd:complexType>
>
> 2)
>  <xsd:complexType name="Type1">
>     <xsd:all>
>        <xsd:element name="elem1" type="xsd:integer"/>
>        <xsd:element name="elem2" >
>             <xsd:complexType>
>                <xsd:all>
>                    <xsd:element name="elem1" type="xsd:integer"/>
>                    <xsd:element name="elem2" type="xsd:boolean"/>
>                </xsd:all>
>             </xsd:complexType>
>    </xsd:all>
>  </xsd:complexType>

The only difference is that in the former the complex type of elem2 is
named Type2 whereas in the latter the complex type of elem2 is
anonymous. They both state the same set of constraints on the content
of elements of type Type2.

> XML data:
> a)
> Value for Schema definition 1:
>  <Type1>
>     <elem1>3</elem1>
>      <elem2>
>         <Type2>
>             <elem1>4</elem1>
>             <elem2>true</elem2>
>         </Type2>
>      </elem2>
> </Type1>

This XML is invalid against both schemas because both schemas state
that elem2 contains an elem1 element followed by an elem2 element, but
here the elem2 element contains a Type2 element. You seem to think
that named complex types indicate elements in an XML document; this is
not the case.

> b)
> value for Schema definition 2, Can't be applicable to definition 1:
>  <Type1>
>     <elem1>3</elem1>
>      <elem2>
>             <elem1>4</elem1>
>             <elem2>true</elem2>
>       </elem2>
> </Type1>

This XML is valid against both schemas, assuming that the Type1
element is declared with a Type1 type, for example with:

<xs:element name="Type1" type="Type1" />

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/
Received on Thursday, 2 January 2003 20:47:27 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:35 GMT