Hi all,

I'm having a problem with restricted complex types using Xerces-J 2.6.1.

I have tried to validate the complex type restriction example from the Schema primer:
http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#DerivByRestrict
using the supplied sample xni.XMLGrammarBuilder.


Running `java xni.XMLGrammarBuilder -f -a ipo_test.xsd`
gives me:
[Error] ipo_test.xsd:56:37: rcase-NameAndTypeOK.7: The type of element 'item', 'null', is not derived from the type of the base element, 'null'.
[Error] ipo_test.xsd:56:37: derivation-ok-restriction.5.4.2: Error for type 'ConfirmedItems'. The particle of the type is not a valid restriction of the particle of the base.


See the files used below.

Am I doing something wrong?

Greetings,

Kornel

--------

file "ipo_test.xsd":
===============================

<schema targetNamespace="http://www.example.com/IPO";
       xmlns="http://www.w3.org/2001/XMLSchema";
       xmlns:ipo="http://www.example.com/IPO";>

<annotation>
 <documentation xml:lang="en">
  International Purchase order schema for Example.com
  Copyright 2000 Example.com. All rights reserved.
 </documentation>
</annotation>

<!-- include address constructs -->
<!--include
 schemaLocation="http://www.example.com/schemas/address.xsd"/-->

<include
 schemaLocation="ipo_address.xsd"/>

<element name="purchaseOrder" type="ipo:PurchaseOrderType"/>

<element name="comment" type="string"/>

<complexType name="PurchaseOrderType">
 <sequence>
  <element name="shipTo"     type="ipo:Address"/>
  <element name="billTo"     type="ipo:Address"/>
  <element ref="ipo:comment" minOccurs="0"/>
  <element name="items"      type="ipo:Items"/>
 </sequence>
 <attribute name="orderDate" type="date"/>
</complexType>

<complexType name="Items">
 <sequence>
  <element name="item" minOccurs="0" maxOccurs="unbounded">
   <complexType>
    <sequence>
     <element name="productName" type="string"/>
     <element name="quantity">
      <simpleType>
       <restriction base="positiveInteger">
        <maxExclusive value="100"/>
       </restriction>
      </simpleType>
     </element>
     <element name="USPrice"    type="decimal"/>
     <element ref="ipo:comment" minOccurs="0"/>
     <element name="shipDate"   type="date" minOccurs="0"/>
    </sequence>
    <attribute name="partNum" type="ipo:SKU" use="required"/>
   </complexType>
  </element>
 </sequence>
</complexType>

<complexType name="ConfirmedItems">
 <complexContent>
  <restriction base="ipo:Items">
   <sequence>

    <!-- item element is different than in Items -->
    <element name="item" minOccurs="1" maxOccurs="unbounded">

     <!-- remainder of definition is same as Items -->
     <complexType>
      <sequence>
       <element name="productName" type="string"/>
        <element name="quantity">
        <simpleType>
         <restriction base="positiveInteger">
          <maxExclusive value="100"/>
         </restriction>
        </simpleType>
       </element>
       <element name="USPrice"    type="decimal"/>
       <element ref="ipo:comment" minOccurs="0"/>
       <element name="shipDate"   type="date" minOccurs="0"/>
      </sequence>
      <attribute name="partNum" type="ipo:SKU" use="required"/>
     </complexType>
    </element>

   </sequence>
  </restriction>
 </complexContent>
</complexType>

<simpleType name="SKU">
 <restriction base="string">
  <pattern value="\d{3}-[A-Z]{2}"/>
 </restriction>
</simpleType>

</schema>


file "ipo_address.xsd": ===============================

<schema targetNamespace="http://www.example.com/IPO";
       xmlns="http://www.w3.org/2001/XMLSchema";
       xmlns:ipo="http://www.example.com/IPO";>

<annotation>
 <documentation xml:lang="en">
  Addresses for International Purchase order schema
  Copyright 2000 Example.com. All rights reserved.
 </documentation>
</annotation>

<complexType name="Address">
 <sequence>
  <element name="name"   type="string"/>
  <element name="street" type="string"/>
  <element name="city"   type="string"/>
 </sequence>
</complexType>

<complexType name="USAddress">
 <complexContent>
  <extension base="ipo:Address">
   <sequence>
    <element name="state" type="ipo:USState"/>
    <element name="zip"   type="positiveInteger"/>
   </sequence>
  </extension>
 </complexContent>
</complexType>

<complexType name="UKAddress">
 <complexContent>
  <extension base="ipo:Address">
   <sequence>
    <element name="postcode" type="ipo:UKPostcode"/>
   </sequence>
   <attribute name="exportCode" type="positiveInteger" fixed="1"/>
  </extension>
 </complexContent>
</complexType>

<!-- other Address derivations for more countries -->

<simpleType name="USState">
 <restriction base="string">
  <enumeration value="AK"/>
  <enumeration value="AL"/>
  <enumeration value="AR"/>
  <!-- and so on ... -->
 </restriction>
</simpleType>

<!-- simple type definition for UKPostcode -->
<simpleType name="Postcode">
  <restriction base="string">
    <length value="7" fixed="true"/>
  </restriction>
</simpleType>

<simpleType name="UKPostcode">
  <restriction base="ipo:Postcode">
    <pattern value="[A-Z]{2}\d\s\d[A-Z]{2}"/>
  </restriction>
</simpleType>

</schema>

_________________________________________________________________
STOP MORE SPAM with the new MSN 8 and get 2 months FREE* http://join.msn.com/?page=features/junkmail



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to