W3C home > Mailing lists > Public > xmlschema-dev@w3.org > November 2001

Re: Group redefinition and recursive content models.

From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
Date: 16 Nov 2001 11:30:31 +0000
To: Eric van der Vlist <vdv@dyomedea.com>
Cc: xmlschema-dev@w3.org
Message-ID: <f5by9l7neaw.fsf@cogsci.ed.ac.uk>
Eric van der Vlist <vdv@dyomedea.com> writes:

> Henry S. Thompson wrote:
> > Eric van der Vlist <vdv@dyomedea.com> writes:
> >
> >>Just wondering how a recursive group such as:
> >>
> >>  <xs:group name="group">
> >>   <xs:sequence>
> >>     <xs:element name="foo">
> >>      <xs:complexType>
> >>        <xs:group ref="group" minOccurs="0"/>
> >>      </xs:complexType>
> >>     </xs:element>
> >>     <xs:element name="bar" type="xs:token"/>
> >>   </xs:sequence>
> >>  </xs:group>
> >>
> >>may be redefine without confusion between the <xs:group ref="group"/> meaning
> >>"extension", the <xs:group ref="group" minOccurs="0"/> meaning "bogus
> >>extension" the <xs:group ref="group" minOccurs="0"/> meaning "reference" ???
> >>
> > I don't see the problem here.  In the _redefinition_, the details of
> > the original definition are irrelevant, and it's the redefinition with
> > respect which the constraints are expressed.
> Then probably I don't read "among its contents at some level" correctly in:
> "6.1 If it has a <group> among its contents at some level the ·actual value·
> of whose ref [attribute] is the same as the ·actual value· of its own name
> attribute plus target namespace, then all of the following must be true:

The referent of 'it' and 'its' in "it has a <group> among its
contents" is the <group> EII which is a child of <redefine>, i.e. the
XML representation of the redefining form.  We haven't gotten to
components, or discharging references, yet.

> If I want to restrict this type to add a constraint on the type of element
> "bar", I will write:

> <xs:redefine schemaLocation="whatever.xsd">
>    <xs:group name="group">
>     <xs:sequence>
>      <xs:element name="foo">
>       <xs:complexType>
>        <xs:group ref="group" minOccurs="0"/>
>       </xs:complexType>
>      </xs:element>
>     <xs:element name="bar" type="xs:NMTOKEN"/>
>    </xs:sequence>
>   </xs:group>
> </xs:redefine>
> It the <xs:group ref="group" minOccurs="0"/> is "among its contents at some
> level" then there is a confusion betwee, a bogus extension and a restriction...

Ah, _now_ I understand -- you're not trying to redefine by extending
that group, you're trying to redefine by restricting it, but the form
about is ambiguous wrt that goal.

>  From your answer, I realize that the rec might mean "among its contents at
> some level but still with a parent equal to the current element" or something
> like that.

Well, you've clarified that it _should_ mean that, thank you!

> If it's the case, I wonder if "direct" recursive group definitions might be
> useful in some cases and if they are clearly forbiden. If they were allowed,
> this definition could not be redefined


But 'direct' circular groups, even with min=0, are in fact disallowed [1].
So at least _this_ problem doesn't arise.


[1] http://www.w3.org/TR/xmlschema-1/#mg-props-correct
  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
          W3C Fellow 1999--2001, part-time member of W3C Team
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/
Received on Friday, 16 November 2001 06:29:36 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:14:55 UTC