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

Re: XML Schema syntax for derivation by restriction

From: <Mike_Leditschke@nemmco.com.au>
Date: Tue, 20 Mar 2001 20:32:58 +1000
To: ht@cogsci.ed.ac.uk (Henry S. Thompson)
Cc: xmlschema-dev@w3.org
Message-ID: <OFA3CDC830.A1186EC0-ON4A256A15.00395EE5@nemmco.com.au>

I don't understand why you say Zip isn't optional in the base type.
Its defined in "Basic" with minOccurs="0"?

In the same context, would you mind elaborating a bit on
your comments for test 3 and 4? I would have thought the
reason 3 gets thrown out is because the element isn't included
in the restricted type.

Thanks
Michael



                                                                                                                                             
                    ht@cogsci.ed.ac.uk                                                                                                       
                    (Henry S.                 To:     "Slein, Judith A" <JSlein@crt.xerox.com>                                               
                    Thompson)                 cc:     "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>, "Corda, Ugo"                          
                    Sent by:                  <Ugo.Corda@usa.xerox.com>, "Sembower, Neil R" <NSembower@crt.xerox.com>, "Stumbo, William K"   
                    xmlschema-dev-requ        <WStumbo@crt.xerox.com>                                                                        
                    est@w3.org                Subject:     Re: XML Schema syntax for derivation by restriction                               
                                                                                                                                             
                                                                                                                                             
                    20/03/2001 07:23                                                                                                         
                    PM                                                                                                                       
                                                                                                                                             
                                                                                                                                             




"Slein, Judith A" <JSlein@crt.xerox.com> writes:

> We've been struggling to understand the XML syntax of restricted types,
and
> in particular what the effect should be of not listing an element or
> attribute from the base type.  As I read the new revision of XML
Structures,
> it looks like
>
> Any attribute declared in the base type can be used in instances of the
> restricted type unless you explicitly say use="prohibited" in the
restricted
> type.  (You do not have to repeat attributes from the base type in order
for
> them to be used in instances of the restricted type.)

Yes.

> Elements declared in the base type cannot be used in instances of the
> restricted type unless you also list them in the definition of the
> restricted type. So not mentioning an element from the base type is
> equivalent to listing it with maxOccurs="0" in the restricted type.

Yes.

> However, I tried the following experiments with 3 different validating
> parsers and got mixed results:
>
> Base type for all tests is:
>
> <complexType name="Basic">
>    <sequence>
>       <element ref="myns:Recipient"/>
>       <element ref="myns:Street" minOccurs="0" maxOccurs="3"/>
>       <element ref="myns:City"/>
>       <element ref="myns:State"/>
>       <element ref="myns:Zip" minOccurs="0"/>
>    </sequence>
>    <attribute name="ID" type="ID" use="required"/>
>    <attribute name="Description" type="string"/>
> </complexType>
>
> <element name="Recipient" type="string"/>
> <element name="Street" type="string"/>
> <element name="City" type="string"/>
> <element name="State" type="string"/>
> <element name="Zip" type="integer"/>
>
> Test 1:  Attribute Description is not listed in the restricted type
>
> <element name="El1" type="myns:RestrictedAttrsOmit"/>
> <complexType name="RestrictedAttrsOmit">
>    <complexContent>
>       <restriction base="myns:Basic">
>    <sequence>
>       <element ref="myns:Recipient"/>
>       <element ref="myns:Street" minOccurs="0" maxOccurs="3"/>
>       <element ref="myns:City"/>
>       <element ref="myns:State"/>
>       <element ref="myns:Zip"/>
>    </sequence>
>    <attribute name="ID" type="ID" use="required"/>
>       </restriction>
>    </complexContent>
> </complexType>
>
> <El1 ID="myID" Description="some text"
>      xmlns="http://www.xerox.com/xmlschemas/MyNamespace"
>      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
>      xsi:schemaLocation="http://www.xerox.com/xmlschemas/MyNamespace
> Restriction.xsd">
>    <Recipient>J. Slein</Recipient>
>    <Street>309 West Ave.</Street>
>    <City>Wilderness</City>
>    <State>ME</State>
>    <Zip>00001</Zip>
> </El1>
>
> Results:
> XSV -- valid
> XML Spy -- valid

Well, I think it's valid.

> XML Instance -- invalid
>
> Test 2: Restricted type has Description with use="prohibited"
>
> <element name="El2" type="myns:RestrictedAttrsProhibit"/>
> <complexType name="RestrictedAttrsProhibit">
>    <complexContent>
>       <restriction base="myns:Basic">
>    <sequence>
>       <element ref="myns:Recipient"/>
>       <element ref="myns:Street" minOccurs="0" maxOccurs="3"/>
>       <element ref="myns:City"/>
>       <element ref="myns:State"/>
>       <element ref="myns:Zip"/>
>    </sequence>
>    <attribute name="ID" type="ID" use="required"/>
>    <attribute name="Description" type="string" use="prohibited"/>
>       </restriction>
>    </complexContent>
> </complexType>
>
> <El2 ID="myID" Description="some text"
>      xmlns="http://www.xerox.com/xmlschemas/MyNamespace"
>      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
>      xsi:schemaLocation="http://www.xerox.com/xmlschemas/MyNamespace
> Restriction.xsd">
>    <Recipient>J. Slein</Recipient>
>    <Street>309 West Ave.</Street>
>    <City>Wilderness</City>
>    <State>ME</State>
>    <Zip>00001</Zip>
> </El2>
>
> Results:
> XSV -- invalid
> XML Spy -- invalid

Well, I think it's invalid.

> XML Instance -- valid
>
> Test 3: Element Zip is not listed in the restricted type
>
> <element name="El3" type="myns:RestrictedElsOmit"/>
> <complexType name="RestrictedElsOmit">
>    <complexContent>
>       <restriction base="myns:Basic">
>    <sequence>
>       <element ref="myns:Recipient"/>
>       <element ref="myns:Street" minOccurs="0" maxOccurs="3"/>
>       <element ref="myns:City"/>
>       <element ref="myns:State"/>
>    </sequence>
>    <attribute name="ID" type="ID" use="required"/>
>    <attribute name="Description" type="string"/>
>       </restriction>
>    </complexContent>
> </complexType>
>
> <El3 ID="myID" Description="some text"
>      xmlns="http://www.xerox.com/xmlschemas/MyNamespace"
>      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
>      xsi:schemaLocation="http://www.xerox.com/xmlschemas/MyNamespace
> Restriction.xsd">
>    <Recipient>J. Slein</Recipient>
>    <Street>309 West Ave.</Street>
>    <City>Wilderness</City>
>    <State>ME</State>
>    <Zip>00001</Zip>
> </El3>
>
> Results:
> XSV -- invalid
> XML Spy -- invalid
> XML Instance -- invalid

Not valid, because Zip wasn't optional in base type.

> Test 4: Element Zip has maxOccurs="0" in restricted type
>
> <element name="El4" type="myns:RestrictedElsMaxOccurs"/>
> <complexType name="RestrictedElsMaxOccurs">
>    <complexContent>
>       <restriction base="myns:Basic">
>    <sequence>
>       <element ref="myns:Recipient"/>
>       <element ref="myns:Street" minOccurs="0" maxOccurs="3"/>
>       <element ref="myns:City"/>
>       <element ref="myns:State"/>
>       <element ref="myns:Zip" minOccurs="0" maxOccurs="0"/>
>    </sequence>
>    <attribute name="ID" type="ID" use="required"/>
>    <attribute name="Description" type="string"/>
>       </restriction>
>    </complexContent>
> </complexType>
>
> <El4 ID="myID" Description="some text"
>      xmlns="http://www.xerox.com/xmlschemas/MyNamespace"
>      xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
>      xsi:schemaLocation="http://www.xerox.com/xmlschemas/MyNamespace
> Restriction.xsd">
>    <Recipient>J. Slein</Recipient>
>    <Street>309 West Ave.</Street>
>    <City>Wilderness</City>
>    <State>ME</State>
>    <Zip>00001</Zip>
> </El4>
>
> Results:
> XSV -- valid
> XML Spy -- valid

Not valid, because Zip wasn't optional in base type.  I've fixed the
bug in XSV that lets this through.

> XML Instance -- invalid
>
> Can someone explain what the results of these tests really should be and
> why?  Thanks.

I can't comment on the others, I've explained why I think XSV is right
in three out of four cases, and fixed the fourth :-)

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 Tuesday, 20 March 2001 05:33:42 GMT

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