RE: why is it not possible to define a simple type as an extension in the range of values of another simple type (newbie question)

The idea of type derivation is that derived types are substitutable for
their base types, so any assumptions that the document recipient makes based
on knowledge of the base type will not be invalidated if a derived type is
used. In that context, one might ask why derivation by extension is allowed
at all. The answer is that it only allows addition of extra child elements
at the end of the contents, and document recipients are not supposed to make
assumptions that such extra elements will not be there. One can question
whether extension should be allowed at all, but if it is allowed, it
certainly needs to be limited in what it can do.
 
Michael Kay
http://www.saxonica.com/


  _____  

From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] On
Behalf Of jorma kala
Sent: 13 July 2008 12:19
To: xmlschema-dev@w3.org
Subject: why is it not possible to define a simple type as an extension in
the range of values of another simple type (newbie question)


I'm quite new to xml schemas.
I do not really understand why if it is possible to define a simple type as
a restriction on the range of values of another simple type, like this for
instance:

  <xsd:simpleType name="type1">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="0"/>
      <xsd:maxInclusive value="100"/>
    </xsd:restriction>
  </xsd:simpleType>




  <xsd:simpleType name="type2">
    <xsd:restriction base="type1">
      <xsd:minInclusive value="10"/>
      <xsd:maxInclusive value="20"/>
    </xsd:restriction>
  </xsd:simpleType>

the reciprocal operation of defining a simple type as an extension on the
range of values of  another simple type is an error (at least I get an error
with the apache parser):

  <xsd:simpleType name="type1">
    <xsd:restriction base="xsd:integer">
      <xsd:minInclusive value="0"/>
      <xsd:maxInclusive value="100"/>
    </xsd:restriction>
  </xsd:simpleType>




  <xsd:simpleType name="type2">
    <xsd:extension base="type1">
      <xsd:minInclusive value="-100"/>
      <xsd:maxInclusive value="200"/>
    </xsd:extension >
  </xsd:simpleType>

thanks a lot.

jorma k

Received on Monday, 14 July 2008 08:25:17 UTC