Thanks. So with XML Schema 1.0, is there any way to have type derivation and an unordered (all) set of children elements?

On Aug 14, 2007, at 1:34 PM, Michael Glavassevich wrote:

Hi Jeffrey,

The content model of a complex type derived by extension (see {content
type} under the section "Complex Type Definition with complex content
Schema Component" [1]) consists of a sequence of the content from the base type followed by the effective content [2] from the type you're declaring.

Given the composition rules, you've effectively declared this (which isn't
valid [3]):

<xs:complexType name="OutputColumn">
 <xs:complexContent>
  <xs:sequence>
   <xs:all>
    <xs:element name="name" type="xs:string"/>
   </xs:all>
   <xs:all>
    <xs:element name="tolerance" type="xs:decimal"/>
   </xs:all>
  </xs:sequence>
 </xs:complexContent>
</xs:complexType>

and not

<xs:complexType name="OutputColumn">
 <xs:complexContent>
  <xs:all>
   <xs:element name="name" type="xs:string"/>
   <xs:element name="tolerance" type="xs:decimal"/>
  </xs:all>
 </xs:complexContent>
</xs:complexType>

which seems to be what you wanted. You can't use type derivation to
achieve this with XML Schema 1.0, though I think XML Schema 1.1 might be
changing the rules a bit to allow it.

Thanks.

[1] http://www.w3.org/TR/xmlschema-1/#declare-type
[2] http://www.w3.org/TR/xmlschema-1/#key-exg
[3] http://www.w3.org/TR/xmlschema-1/#cos-all-limited

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Jeffrey A Lage <[EMAIL PROTECTED]> wrote on 08/14/2007
12:03:53 PM:

All,

It seems to me that this should be a valid XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://schemas.fundevs.com/1/asgard";
        xmlns:xs="http://www.w3.org/2001/XMLSchema";
        targetNamespace="http://schemas.fundevs.com/1/asgard";
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        id="TestSuite">

    <xs:complexType name="Column">
        <xs:all>
            <xs:element name="name" type="xs:string"/>
        </xs:all>
    </xs:complexType>

    <xs:complexType name="OutputColumn">
        <xs:complexContent>
            <xs:extension base="Column">
                <xs:all>
                    <xs:element name="tolerance" type="xs:decimal"/>
                </xs:all>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>

</xs:schema>

But I am receiving the following error from the parser:

cos-all-limited.1.2: An 'all' model group must appear in a particle
with {min occurs} = {max occurs} = 1, and that particle must be part
of a pair which constitutes the {content type} of a complex type
definition.

Can someone explain to me why this is incorrect?

Jeffrey A. Lage | Fund Development Services


440 Park Avenue South | 14th Floor | New York | NY | 10016 | email:
[EMAIL PROTECTED] | office: 212.920.3527 | mobile:
917.536.1767

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Jeffrey A. Lage | Fund Development Services
440 Park Avenue South | 14th Floor | New York | NY | 10016 | email: [EMAIL PROTECTED] | office: 212.920.3527 | mobile: 917.536.1767



Reply via email to