- From: Mark Feblowitz <mfeblowitz@frictionless.com>
- Date: Tue, 12 Feb 2002 14:14:13 -0500
- To: "'Noah Mendelsohn'" <noah_mendelsohn@us.ibm.com>
- Cc: "'Eddie Robertsson'" <erobertsson@allette.com.au>, xmlschema-dev@w3.org
Right - A sequence of sequences is equivalent to a union of sequences. So extension bears no surprises. A sequence of unbounded choices is not equivalent to a union of unbounded choices. Thus, the unbounded choices design pattern is not extensible. As was suggested, a substitution group can achieve an extensible unordered bag of elements, but using a different extension mechanism, and at a cost. ---------------------------------------------------------------------------- ---- 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: Noah Mendelsohn [mailto:noah_mendelsohn@us.ibm.com] Sent: Tuesday, February 12, 2002 1:55 PM To: Mark Feblowitz Cc: 'Eddie Robertsson'; xmlschema-dev@w3.org Subject: 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:14:53 UTC