- From: Michael Marchegay <mmarcheg@optonline.net>
- Date: Thu, 05 Feb 2004 08:31:49 -0500
- To: Bruno Chatel <bcha@chadocs.net>
- Cc: xmlschema-dev@w3.org, bcha@chadocs.com, pat@tireme.fr
Bruno Chatel a écrit :
>Hi,
>
>I have some questions about extension of complexTypes (and do not found the answer
>in the specifications) :
>
>Is extension of a complexType composed of sequence, by using choise is allowed ?
>Is extension of a complexType composed of choice, by using sequence is allowed ?
>
>
>
Nothing forbids it, and if you look at "3.4.2 XML Representation of
Complex Type Definitions", the content type of the complex type
definition is defined as:
----
[...]
2 If the <extension> alternative is chosen, then [Definition:] let the
explicit content be empty if any of the sub-clauses of clause 1.1 above
applies, otherwise the particle corresponding to the <all>, <choice>,
<group> or <sequence> among the [children], and then take the
appropriate case among the following:
2.1 If the ·explicit content· is empty, then the {content type} of the
type definition ·resolved· to by the ·actual value· of the base [attribute]
2.2 If the type definition ·resolved· to by the ·actual value· of the
base [attribute] has a {content type} of empty, then a pair of mixed or
elementOnly (determined as per clause 1.2.1 above) and the ·explicit
content· itself;
2.3 otherwise a pair of mixed or elementOnly (determined as per clause
1.2.1 above) and a particle whose properties are as follows:
{min occurs}
1
{max occurs}
1
{term}
A model group whose {compositor} is sequence and whose {particles}
are the particle of the {content type} of the type definition ·resolved·
to by the ·actual value· of the base [attribute] followed by the
·explicit content·.
----
>Are these derivations allowed ?
>
><xs:complexType name="tseq">
> <xs:sequence>
> <xs:element name="t1"/>
> <xs:element name="t2"/>
> </xs:sequence>
></xs:complexType>
>
><xs:complexType name="tchoi">
> <xs:sequence>
> <xs:element name="t3"/>
> <xs:element name="t4"/>
> </xs:sequence>
></xs:complexType>
>
><xs:complexType name="tseq-ext-choi">
> <xs:complexContent>
> <xs:extension base="tseq">
> <xs:choice>
> <xs:element name="t3"/>
> </xs:choice>
> </xs:extension>
> </xs:complexContent>
></xs:complexType>
>
><xs:complexType name="tchoi-ext-seq">
> <xs:complexContent>
> <xs:extension base="tchoi">
> <xs:sequence>
> <xs:element name="t1"/>
> </xs:sequence>
> </xs:extension>
> </xs:complexContent>
></xs:complexType>
>
>
>If yes, what is the effective content model for these ?
>
>
>
For example, the term in the content type of tseq-ext-choi is equivalent to:
<xs:sequence>
<xs:sequence>
<xs:element name="t1"/>
<xs:element name="t2"/>
</xs:sequence>
<xs:choice>
<xs:element name="t3"/>
</xs:choice>
</xs:sequence>
Michael
Received on Thursday, 5 February 2004 08:32:31 UTC