RE: <xsd:sequence> required?

You'd get open #2.  Extension always creates a sequence.

------------------------------------------------------------------
Noah Mendelsohn                              Voice: 1-617-693-4036
IBM Corporation                                Fax: 1-617-693-8676
One Rogers Street
Cambridge, MA 02142
------------------------------------------------------------------







Mark Feblowitz <mfeblowitz@frictionless.com>
Sent by: xmlschema-dev-request@w3.org
02/12/2002 09:39 AM

 
        To:     "'Eddie Robertsson'" <erobertsson@allette.com.au>, xmlschema-dev@w3.org
        cc:     xmlschema-dev@w3.org
        Subject:        RE: <xsd:sequence> required?


I've asked this before, but don't recall seeing an answer:

Is the design pattern of an unbounded choice extensible?

If I extend a type that contains an unbounded choice element and specify
that the extended type also contains an unbounded choice element, would 
the
behavior be

1) a full combination of the two sets of elements, appearing in any order,
or

2) two separate choice subsets with elements in each subset appearing in 
any
order


Extensibility of this pattern could be an important design criterion.

Thanks,

Mark


----------------------------------------------------------------------------
----

Mark Feblowitz                                   [t] 617.715.7231
Frictionless Commerce Incorporated     [f] 617.495.0188
XML Architect                                     [e]
mfeblowitz@frictionless.com
400 Technology Square, 9th Floor
Cambridge, MA 02139
www.frictionless.com


 -----Original Message-----
From:   Eddie Robertsson [mailto:erobertsson@allette.com.au]
Sent:   Monday, February 11, 2002 7:01 AM
To:     xmlschema-dev@w3.org
Cc:     xmlschema-dev@w3.org
Subject:        Re: <xsd:sequence> required?

> What I want to be able to say with the following piece of code is that
> one can use the mentioned elements any number of times and in any order.
>
>    <xsd:complexType name="ModelType">
>      <xsd:element ref="cellml:units" minOccurs="0
> maxOccurs="unbounded"/>
>      <xsd:element ref="cellml:component" minOccurs="0"
>        maxOccurs="unbounded" />
>      <xsd:element ref="cellml:group" minOccurs="0"
>        maxOccurs="unbounded"/>
>      <xsd:element ref="cellml:connection" minOccurs="0"
>        maxOccurs="unbounded" />
>      <xsd:element ref="rdf:RDF" minOccurs="0" maxOccurs="unbounded" />
>      <xsd:attribute ref="cellml:name" use="required" />
>      <xsd:attribute ref="cmeta:id" use="optional" />
>    </xsd:complexType>
>
> Since the children elements can be in any order, the <xsd:sequence>
> element is not useful.  Neither are the <xsd:choice> and <xsd:all>.  Is
> it necessary that I use one of them in this case?

Yes, you always need to have one of sequence, all or choice specified. 
Since
you want all elements to appear any number of times and in any order you 
can
add minOccurs="0" and maxOccurs="unbounded" to the choice element itself.
So, you would have:

   <xsd:complexType name="ModelType">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
     <xsd:element ref="cellml:units" minOccurs="0
maxOccurs="unbounded"/>
     <xsd:element ref="cellml:component" minOccurs="0"
       maxOccurs="unbounded" />
     <xsd:element ref="cellml:group" minOccurs="0"
       maxOccurs="unbounded"/>
     <xsd:element ref="cellml:connection" minOccurs="0"
       maxOccurs="unbounded" />
     <xsd:element ref="rdf:RDF" minOccurs="0" maxOccurs="unbounded" />
    </xsd:choice>
    <xsd:attribute ref="cellml:name" use="required" />
    <xsd:attribute ref="cmeta:id" use="optional" />
   </xsd:complexType>

Cheers,
/Eddie

Received on Tuesday, 12 February 2002 14:09:15 UTC