W3C home > Mailing lists > Public > xmlschema-dev@w3.org > June 2007

Re: Understanding Restrictions on Groups

From: Henry S. Thompson <ht@inf.ed.ac.uk>
Date: Tue, 26 Jun 2007 11:48:40 +0100
To: "Eliot Kimber" <ekimber@innodata-isogen.com>
Cc: <xmlschema-dev@w3.org>
Message-ID: <f5bir9bm1o7.fsf@hildegard.inf.ed.ac.uk>

Hash: SHA1

Eliot Kimber writes:

> I'm trying to understand what I can and can't do with restrictions on 
> groups.
> What I want to do is redefine a group in order to completely replace its 
> members, rather than extending its members. What I have that works 
> (using OxygenXML 8.2, which I believe uses XercesJ 2.9):

Well, in principle you can't do that.  W3C XML Schema defines
restriction as the elimination of _optional_ content, so getting rid
of _required_ content isn't allowed.

The motivation is to provide an invariant rather like that of
object-oriented programming languages:  any valid member of a type
defined by restriction is also a valid member of the type defined by
its base.

Having said that, there's a loophole in practice (which will probably
be closed in XML Schema 1.1 -- you have been warned!), which means you
can get what you want if you do it in two steps:


<xs:redefine schemaLocation="Redefine.xsd">

   <xs:group name="a">
       <xs:group ref="b"/>


First step extends the original by wrapping it in a choice with 'b',
second step restricts away the now-optional 'a'.  Don't try this at
home, even sending this message makes me feel a bit guilty :-)

- -- 
 Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
                     Half-time member of W3C Team
    2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
            Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk
                   URL: http://www.ltg.ed.ac.uk/~ht/
[mail really from me _always_ has this .sig -- mail without it is forged spam]
Version: GnuPG v1.2.6 (GNU/Linux)

Received on Tuesday, 26 June 2007 10:48:56 UTC

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