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

xmlschema does not support principle of substitutability of subty pe for its supertype

From: Michael Burns <Michael.Burns@sas.com>
Date: Mon, 27 Nov 2000 17:07:32 -0500
Message-ID: <764CA2FF49EC054BA086FC8253A52DD7624DEF@merc09.us.sas.com>
To: "'xmlschema-dev@w3.org'" <xmlschema-dev@w3.org>
I have a problem with a schema I am developing where elements of a subtype 
are not substitutable for elements of a supertype.   
 
Am I doing something wrong or am I expecting XMLSchema to do something
that it is not designed to do? 
 
I have a silly example to illustrate my point:
 
http://www.realtime.net/~mburns/xml/critters/Hawk1.xml <http://www.realtime.net/~mburns/xml/critters/Hawk1.xml> 
 
This file reproduces a problem I am having with an XML Schema.
It's a rather silly example constructed by taking a sensible but
proprietary schema, simplifying it extensively and changing the 
names of types to examples from the animal world.  Hey, I have to
use my BS in Biology for something!  
 
The type hierarchy looks like this:
 
   Animal
      Vertebrate
          Bird
              BirdOfPrey
                   Hawk
          Mammal
              Rodent 
 
  I have defined a bi-directional association between Vertebrate
  and Vertebrate that defines the Preditor/Prey relationship. 
  This gets manifest in the model as a sub-element called 
  either FoodList or PredatorList that is a list of Vertebrate 
  elements. 
 
  In xml files where I reference the other member of the association
  as Vertebrate then it works fine.  But when I use a subtype of 
  Vertebrate I get validation errors like this:
 
file:/C:/ModelCompilerTestPen/test/Mouse2.xml:25:4: Invalid per cvc-complex-type.1.2.4: element {None}:BirdOfPrey not allowed here in element {None}:PredatorList: 
 
file:/C:/ModelCompilerTestPen/test/Mouse2.xml:25:4: Invalid per src-resolve: undeclared element {None}:BirdOfPrey
 
 
 
It contains the following files:
 
-rw-r--r--   1 544      everyone     4941 Nov 27 15:13 Critters.xsd
-rw-r--r--   1 544      everyone      964 Nov 27 15:33 Hawk1.xml
-rw-r--r--   1 544      everyone      974 Nov 27 15:21 Hawk2.xml
-rw-r--r--   1 544      everyone      381 Nov 27 15:15 Hawk3.xml
-rw-r--r--   1 544      everyone      369 Nov 27 15:24 Hawk4.xml
-rw-r--r--   1 544      everyone     1010 Nov 27 15:38 Mouse1.xml
-rw-r--r--   1 544      everyone     1042 Nov 27 15:37 Mouse2.xml
-rw-r--r--   1 544      everyone      449 Nov 27 15:29 Mouse3.xml
 
Mouse3.xml, Hawk3.xml, and Hawk4.xml all validate cleanly with XSV.
However, Mouse1 and 2 don't and neither do Hawk1 and 2. 
 
You can find all of these examples on my personal web page:
 
http://www.realtime.net/~mburns/xml/critters/ <http://www.realtime.net/~mburns/xml/critters/> 

--------------------------------------------------------------------------------------------
Michael Burns                             email: Michael.Burns@sas.com
Principal Systems Developer        home: mburns@bga.com 
Metadata Integration Technology   voice: (512)258-5171x3264
SAS Institute, Inc.                           fax: (512)258-3906
11920 Wilson Parke Ave.        www: http://www.realtime.net/~mburns
Austin, TX 78726-4052            sww: http://sww.sas.com/~sasmkb
   "choose for yourselves today whom you will serve;...
    but as for me and my house, we will serve the Lord." Joshua 24:15


 
Received on Monday, 27 November 2000 17:22:25 GMT

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