- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Fri, 11 Jan 2002 09:53:58 +0000
- To: "boriero" <aboriero@hoc.elet.polimi.it>
- CC: xmlschema-dev@w3.org
Hi Andrea,
> 1. when i create a new complexType with complexContent by
> Restriction, can i modify the value of {min occurs} and/or {max
> occurs} of the model group schema components( i.e. <all> , <choice>,
> <sequence>)?
Yes. As long as the {min occurs} of the particle is equal to or more
than the {min occurs} of the equivalent particle in the base
definition, and either the {max occurs} in the base definition is
'unbounded' or the the {max occurs} in the restricted definition is
equal to or less than the {max occurs} of the equivalent particle in
the base definition, then it's fine. So there's no problem with the
example you give.
> 2. extending a complextype using a complexContent:
>
> a. can I extend an <all> with another <all> ? and with a <sequence>
> or with a <choice> ?
No. When you derive by extension, the content model of the derived
type is a sequence - the content model of the base type followed by
the content model you specify as the extension. 'All' model groups are
not allowed within sequences, so extensions from a base type whose
content model contains an 'all' model group (unless its empty or has
one member) are illegal.
> b. can I extend a <choice> with another <choice>? and with a
> <sequence > or with an <all> ?
You can extend a choice with another choice or a sequence, but not an
all for the same reasons as given above. Note that when you extend
with a choice, the two choices are combined in a sequence (the choice
from the base type followed by the choice from the derived type) and
not in a choice (all the particles in one big choice).
> c. can i extend a <sequence> with an <all> or with a <choice>?
You can extend a sequence with a choice, but not an all for the same
reasons as given above.
> 3. I do not understand the meaning of the following sentence from
> XML Schema Part 1: Structures 3.9.6 Constraints on Particle Schema
> Components:
>
> Schema Component Constraint: Particle Valid (Extension)
>
> [Definition:] For a particle (call it E, for extension) to be a
> valid extension of another particle (call it B, for base) one of the
> following must be true:
>
> 1 They are the same particle.
> 2 E's {min occurs}={max occurs}=1 and its {term} is a sequence group
> whose {particles}' first member is a particle all of whose
> properties, recursively, are identical to those of B, with the
> exception of {annotation} properties.
>
> someone may explain to me, with an example, when this constraint is
> applied...and if it is related with my first question.
I do find this one of the more confusing pieces of the Rec :(
This constraint is applied when you create a complex type that is
derived by extension from another complex type. The constraint is
actually called from the Schema Component Constraint: Derivation Valid
(Extension) http://www.w3.org/TR/xmlschema-1/#cos-ct-extends.
When you create a complex type that's derived by extension, the
{content type} of that complex type is defined as a sequence with two
particles - the {content type} from the base type definition, followed
by the content model defined by the content of the xs:complexType
element.
The Particle Valid (Extension) constraint checks this sequence.
Naturally, the sequence must be a valid sequence; it isn't a valid
sequence if it contains an all group, for example. Other than that, it
just checks if the first particle in the sequence is identical to the
{content type} of the base type definition.
When you're creating a schema with XML, then all this constraint
really does is check that the sequence is a valid sequence - you know
that the second clause is going to be true because that's how the
{content type} of the derived type was created in the first place.
This constraint has more impact if the schema is generated in some
other method - the schema components created through some API for
example - where you couldn't make that guarantee.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
Received on Friday, 11 January 2002 04:54:01 UTC