- From: Dare Obasanjo <dareo@microsoft.com>
- Date: Mon, 22 Jul 2002 11:35:02 -0700
- To: "Jeni Tennison" <jeni@jenitennison.com>
- Cc: <xmlschema-dev@w3.org>
For some reason I thought there was ambiguity over whether the minOccurs of b1 was 0 since that of its parent sequence is 0 but I realize that is incorrect. :)
-----Original Message-----
From: Jeni Tennison [mailto:jeni@jenitennison.com]
Sent: Mon 7/22/2002 11:12 AM
To: Dare Obasanjo
Cc: xmlschema-dev@w3.org
Subject: Re: Is this valid?
Hi Dare,
> I thought that but would like to know if the REC allows it given the
> rules in
>
> http://www.w3.org/TR/xmlschema-1/#rcase-RecurseAsIfGroup
> and
> http://www.w3.org/TR/xmlschema-1/#rcase-Recurse
>
> Specifically can
>
> <xs:sequence minOccurs="0">
> <xs:element name="a1"/>
> <xs:element name="b1"/>
> </xs:sequence>
>
> be restricted to
>
> <xs:element name="b1"/>
>
> given the wording [not intentions] of the REC?
When you do a restriction from a sequence to an element particle, you
treat the element particle as if it were a sequence, so you then have
to look at the "Recurse" rule for mapping sequences to sequences:
For an all or sequence group particle to be a ·valid restriction· of
another group particle with the same {compositor} all of the
following must be true:
1 R's occurrence range is a valid restriction of B's occurrence
range as defined by Occurrence Range OK (§3.9.6).
2 There is a complete ·order-preserving· functional mapping from
the particles in the {particles} of R to the particles in the
{particles} of B such that all of the following must be true:
2.1 Each particle in the {particles} of R is a ·valid
restriction· of the particle in the {particles} of B it maps
to as defined by Particle Valid (Restriction) (§3.9.6).
2.2 All particles in the {particles} of B which are not mapped
to by any particle in the {particles} of R are ·emptiable· as
defined by Particle Emptiable (§3.9.6).
The crux is #2. You're asking whether, given:
(a1, b1)? -> (b1)
there's a complete order-preserving functional mapping from a1 and b1
to b1. The answer is that there isn't. There are various possible
mappings, all of which fall foul of #2. The best map is:
a1 -> nothing
b1 -> b1
and #2.2 says that if a particle in the base doesn't map on to
anything (as a1 doesn't) then it must be emptiable. Emptiable means:
[Definition:] For a particle to be emptiable one of the following
must be true:
1 Its {min occurs} is 0.
2 Its {term} is a group and the minimum part of the effective
total range of that group, as defined by Effective Total Range
(all and sequence) (§3.8.6) (if the group is all or sequence) or
Effective Total Range (choice) (§3.8.6) (if it is choice), is 0.
http://www.w3.org/TR/xmlschema-1/#cos-group-emptiable
and neither of those cases is true (the min occurs for the particle a1
is 1, and it isn't a group, it's an element particle).
Do you read it differently?
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
Received on Monday, 22 July 2002 14:35:35 UTC