- From: Xan Gregg <xan@tibco.com>
- Date: Mon, 25 Feb 2002 16:06:30 -0500
- To: "'Brenda Bell'" <bbell@juicesoftware.com>, "'Jeni Tennison'" <jeni@jenitennison.com>
- Cc: "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
- Message-ID: <339902DC0E58D411986A00B0D03D8432D07793@extmail.extensibility.com>
Jeni is correct, though I must say the wording in the spec can be
misinterpreted. Section 3.8.6 (below) seems to imply that any ALL group is
OK as long as it is at the top of some model group definition, such as
"baseGroup" in the example. However, once "baseGroup" is used in the
complex type, the ALL group is no longer in a model group definition -- it
is now in the content model of the complex type. And it is not valid since
it is not at the top of the complex type.
xan
[1] http://www.w3.org/TR/xmlschema-1/#cos-all-limited
<http://www.w3.org/TR/xmlschema-1/#cos-all-limited>
Schema Component Constraint: All Group Limited
When a model group has <http://www.w3.org/TR/xmlschema-1/#compositor>
{compositor} all all of the following must be true:
1 one of the following must be true:
1.1 It appears as the model group of a model group definition.
1.2 It appears in a particle with
<http://www.w3.org/TR/xmlschema-1/#p-min_occurs> {min occurs}=
<http://www.w3.org/TR/xmlschema-1/#p-max_occurs> {max occurs}=1, and that
particle must be part of a pair which constitutes the
<http://www.w3.org/TR/xmlschema-1/#content_type> {content type} of a complex
type definition.
2 The <http://www.w3.org/TR/xmlschema-1/#p-max_occurs> {max occurs} of all
the particles in the <http://www.w3.org/TR/xmlschema-1/#particles>
{particles} of the group must be 0 or 1.
-----Original Message-----
From: Brenda Bell [mailto:bbell@juicesoftware.com]
Subject: RE: Need help with any and all
Hmmmm... XMLSpy may have a bug that let's me do this. Either way, I decided
to go with the extra element -- I believe it's a much cleaner approach for
this particular problem.
-----Original Message-----
From: Jeni Tennison [ mailto:jeni@jenitennison.com
<mailto:jeni@jenitennison.com> ]
Subject: Re: Need help with any and all
Hi Brenda,
> I actually found another option (perseverence is key :):
>
> <xs:group name="baseGroup">
> <xs:all>
> <xs:element name="A" type="xs:string" minOccurs="1"
> maxOccurs="1"/>
> <xs:element name="B" type="xs:string" minOccurs="1"
> maxOccurs="1"/>
> <xs:element name="C" type="xs:string" minOccurs="1"
> maxOccurs="1"/>
> </xs:all>
> </xs:group >
>
> <xs:complexType name="extendedType">
> <xs:sequence>
> <xs:group ref="tns:baseGroup"/>
> <xs:any namespace="##other" minOccurs="0"
> maxOccurs="unbounded" processContents="skip"/>
> </xs:sequence>
> </xs:complexType>
Hmm... I don't think that this is legal; I think that the only place
that you can refer to a model group definition whose model group is an
all group is directly from a complex type definition. Testing with
Xerces-C++ confirms this, though I can't put my finger on the place in
the Rec where it's stated.
Certainly, this ties in with the fact that you can't define an xs:all
directly within a xs:sequence -- model group definitions are supposed
to just give names to model groups so that you can reuse them, not
allow you to do things that you can't do otherwise.
Hopefully Henry or someone will be able to point to the relevant
constraint in the Rec...
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/ <http://www.jenitennison.com/>
Received on Monday, 25 February 2002 16:07:48 UTC