W3C home > Mailing lists > Public > xmlschema-dev@w3.org > July 2002

Re: Is this valid?

From: Jeni Tennison <jeni@jenitennison.com>
Date: Mon, 22 Jul 2002 19:12:11 +0100
Message-ID: <251405659691.20020722191211@jenitennison.com>
To: "Dare Obasanjo" <dareo@microsoft.com>
CC: xmlschema-dev@w3.org

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.


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?



Jeni Tennison
Received on Monday, 22 July 2002 14:12:12 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:15:04 UTC