Re: extension vs restriction

What stops a person from changing the entire content of a type through the
restricting of groups?
Could you go like this? (which would be against the grain of derivation by
restriction)

...

<group name="s2r">
<sequence>
  <element ref='new_element' minOccurs ='0' maxOccurs='1'/>
  <element ref='some_other_element' minOccurs ='0' maxOccurs='1'/>
</sequence>
</group>

<complexType name='t3' base='t2' derivedBy='restriction'>
<sequence>
  <group ref='s1'/>
  <group ref='s2r'/>
</sequence>
</complexType>

If not, what is allowable in doing a restriction on groups and group
components?

Thanks for the response. :-)

Zar


-----Original Message-----
From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
To: Zar Zar Tun <zarzar@dstc.edu.au>
Cc: www-xml-schema-comments@w3.org <www-xml-schema-comments@w3.org>
Date: Friday, 8 September 2000 8:08 PM
Subject: Re: extension vs restriction


>"Zar Zar Tun" <zarzar@dstc.edu.au> writes:
>
>> Wouldn't it get just a bit hairy if we had to repeat all the elements and
>> attributes of the base type if we wanted to do a derivation by
restriction?
>>
>> For example, the base type could itself be derived by extension from
another
>> type, e.g.
>>
>> type 1
>>         element 1 minOccurs = 0 maxOccurs=1
>>         element 2 minOccurs = 0 maxOccurs=1
>>         element 3 minOccurs = 0 maxOccurs=1
>>
>> type 2 derives from type 3 by extension
>>         element 4 minOccurs = 0 maxOccurs=1
>>         element 5 minOccurs = 0 maxOccurs=1
>>
>> Do we also have to declare the elements inherited from super type of the
>> base type, such as
>>
>> type 3 derives from type 4 by restriction
>>         element 1 minOccurs = 0 maxOccurs=1
>>         element 2 minOccurs = 0 maxOccurs=1
>>         element 3 minOccurs = 0 maxOccurs=1
>>         element 4 minOccurs = 0 maxOccurs=1
>>         element 5 minOccurs = 0 maxOccurs=0
>>
>> If so, then it could get really ugly. A type could be part of a long type
>> hierarchy chain. Then, you would have to look up all the ancestors that a
>> type derives from, and do a tedious copy-and-paste job. Also, types can
be
>> derived from types in other files through import/include statements,
which
>> makes it more inconvenient. And you may have to go through all this
effort
>> to just change one small item in a declaration.
>>
>> Has this been resolved? I'm probably repeating what others may have
pointed
>> out. And if so, what is the new situation on derivation by restriction?
I'd
>> also like to know how derivation by restriction would work with groups -
>> attribute groups, model groups, group components - but that's opening
>> another can of worms.
>
>Actually, that's not another can of worms, that's the solution.
>
>No, we haven't changed the necessity of repeating the whole model in
>order to restrict it.  Yes, that's tedious, but the WG decided it was
>the best compromise between clarity and conciseness.  Use of groups is
>fine, and mitigates the problem, here's your example recast for this
>purpose:
>
><group name="s1">
> <sequence>
>  <element ref='1' minOccurs ='0' maxOccurs='1'/>
>  <element ref='2' minOccurs ='0' maxOccurs='1'/>
>  <element ref='3' minOccurs ='0' maxOccurs='1'/>
> </sequence>
></group>
>
><complexType name="t1">
>  <group ref="s1"/>
></complexType>
>
>
><group name="s2">
> <sequence>
>  <element ref='4' minOccurs ='0' maxOccurs='1'/>
>  <element ref='5' minOccurs ='0' maxOccurs='1'/>
> </sequence>
></group>
>
><complexType name='t2' base='t1' derivedBy='extension'>
> <group ref='s2'/>
></complexType>
>
><group name="s2r">
> <sequence>
>  <element ref='4' minOccurs ='0' maxOccurs='1'/>
>  <element ref='5' minOccurs ='0' maxOccurs='0'/>
> </sequence>
></group>
>
><complexType name='t3' base='t2' derivedBy='restriction'>
> <sequence>
>  <group ref='s1'/>
>  <group ref='s2r'/>
> </sequence>
></complexType>
>
>ht
>--
>  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 Monday, 11 September 2000 01:10:41 UTC