- From: Eddie Robertsson <erobertsson@allette.com.au>
- Date: Thu, 29 Aug 2002 09:58:36 +1000
- To: "Gregory M. Messner" <gmessner@breezefactor.com>
- CC: "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
Hi Gregory,
>The first submittal of this question had some errors in the sample schema
>(missing end tags), thus this second submittal, sorry.
>
>I'm trying to get a definitive interpretation of the use of minOccurs
>attribute and an xsd:group reference. The only thing I could find in the
>specification is at http://www.w3.org/TR/xmlschema-1/#element-group and it
>was a little unclear.
>
>I have an xsd:group defined with a sequence of optional elements as follows:
>
><xsd:group name="agroup">
> <xsd:sequence>
> <xsd:element name="A" minOccurs="0" type="xsd:string" />
> <xsd:element name="B" minOccurs="0" type="xsd:string" />
> <xsd:element name="C" minOccurs="0" type="xsd:string" />
> </xsd:sequence>
></xsd:group>
>
>And a reference to it as follows:
>
><xsd:element name="test">
> <xsd:complexType>
> <xsd:sequence>
> <xsd:element name="foo" minOccurs="0"
>type="xsd:string" />
> <xsd:group ref="agroup"/>
> </xsd:sequence>
> </xsd:complexType>
></xsd:element>
>
>
>Since the "agroup" reference in the "test" element has an implied
>minOccurs="1" would a document with an empty "test" element be valid against
>the schema?
>
Yes, I believe this would be valid. I think the place for this in the
spec is "3.8.4 Model Group Validation Rule" [1] which has the following
paragraph:
"Nothing in the above should be understood as ruling out groups whose
{particles} is empty: although no sequence can be ·valid· with respect
to such a group whose {compositor} is choice, the empty sequence is
·valid· with respect to empty groups whose {compositor} is sequence or
all. "
So, this means that for <all> and <sequence> you are allowed to have
empty particles but for <choice> this would not be valid. In conclusion:
An empty "test" element would be valid against the above schema but if
you change the group definition in the schema to:
<xsd:group name="agroup">
<xsd:choice>
<xsd:element name="A" minOccurs="0" type="xsd:string" />
<xsd:element name="B" minOccurs="0" type="xsd:string" />
<xsd:element name="C" minOccurs="0" type="xsd:string" />
</xsd:choice>
</xsd:group>
then it would no longer be valid.
Cheers,
/Eddie
[1] http://www.w3.org/TR/xmlschema-1/#section-Model-Group-Validation-Rules
Received on Wednesday, 28 August 2002 19:59:01 UTC