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

Re: Derivation by restriction from <any>

From: Jeni Tennison <jeni@jenitennison.com>
Date: Fri, 8 Mar 2002 10:06:45 +0000
Message-ID: <42260234467.20020308100645@jenitennison.com>
To: "Dare Obasanjo" <dareo@microsoft.com>
CC: "Henry S. Thompson" <ht@cogsci.ed.ac.uk>, Simon.Cox@csiro.au, xmlschema-dev@w3.org
Hi Dare,

> Upon investigating the W3C XML Schema Structures specification I've
> had some difficulty locating where it specifies that one-to-many
> particle derivations are acceptable. I would appreciate a pointer to
> where in the recommendation it mentions that this is possible. From
> what I've read[0] particle derivation is a one-to-one affair.

The specific derivation from this example is a derivation by
restriction from the base model group:

  <sequence>
    <any maxOccurs="unbounded"/>
  </sequence>

to the derived model group:

  <sequence>
    <element name="e1" type="string"/>
    <element name="e2" type="integer" minOccurs="0"/>
    <element name="e3" type="date" minOccurs="0"/>
  </sequence>

By the rules of the Schema Component Constraint: Particle Valid
(Restriction)
(http://www.w3.org/TR/xmlschema-1/#cos-particle-restrict), the
sequence in the base model group is "pointless" so the base model
group is equivalent to:

  <any maxOccurs="unbounded" />

The derivation we're looking at is therefore a restriction from an any
wildcard to a sequence model group, which falls under the purview of
Schema Component Constraint: Particle Derivation OK
(All/Choice/Sequence:Any -- NSRecurseCheckCardinality):

  For a group particle to be a ·valid restriction· of a wildcard
  particle all of the following must be true:
  1 Every member of the {particles} of the group is a ·valid
    restriction· of the wildcard as defined by Particle Valid
    (Restriction) (§3.9.6).
  2 The effective total range of the 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 a valid restriction of B's occurrence range as defined
    by Occurrence Range OK (§3.9.6).

     http://www.w3.org/TR/xmlschema-1/#rcase-NSRecurseCheckCardinality

So each of the element declarations in the derived model group (e1, e2
and e3) must be a valid restriction of the any in the base model group
(which they are).

As far as the one-to-many mapping is concerned, we have to look at the
effective total range of the sequence compared to the occurrence range
of the any wildcard. The effective total range of the sequence is
specified in the Schema Component Constraint: Effective Total Range
(all and sequence):

  The effective total range of a particle whose {term} is a group
  whose {compositor} is all or sequence is a pair of minimum and
  maximum, as follows:

  minimum
    The product of the particle's {min occurs} and the sum of the {min
    occurs} of every wildcard or element declaration particle in the
    group's {particles} and the minimum part of the effective total
    range of each of the group particles in the group's {particles}
    (or 0 if there are no {particles}).

  maximum
    unbounded if the {max occurs} of any wildcard or element
    declaration particle in the group's {particles} or the maximum
    part of the effective total range of any of the group particles in
    the group's {particles} is unbounded, or if any of those is
    non-zero and the {max occurs} of the particle itself is unbounded,
    otherwise the product of the particle's {max occurs} and the sum
    of the {max occurs} of every wildcard or element declaration
    particle in the group's {particles} and the maximum part of the
    effective total range of each of the group particles in the
    group's {particles} (or 0 if there are no {particles}).

                       http://www.w3.org/TR/xmlschema-1/#cos-seq-range

Following these rules, the effective total range of the sequence is a
minimum of 1 and the maximum of 3.

Now we have to look at Schema Component Constraint: Occurrence Range
OK:

  For a particle's occurrence range to be a valid restriction of
  another's occurrence range all of the following must be true:
  1 Its {min occurs} is greater than or equal to the other's {min
    occurs}.
  2 one of the following must be true:
    2.1 The other's {max occurs} is unbounded.
    2.2 Both {max occurs} are numbers, and the particle's is less
        than or equal to the other's.

                            http://www.w3.org/TR/xmlschema-1/#range-ok

The minimum of 1 is equal to the {min occurs} of 1 for the any
wildcard, and the any wildcard has a {max occurs} of unbounded.

Thus, the one-to-many mapping is just fine, I think.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/
Received on Friday, 8 March 2002 05:06:46 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:29 GMT