Problems with schemas - is it me, or xerces-j?

I am trying to write a schema for a data format, and am using xerces-j
to validate a document, as this is the target application. I have come
accross a couple of problems, and I don't know whether xerces-j is
wrong, or my understanding of XML Schema is wrong. I wonder if anyone
can put me straight on this...

Thank you in advance,

John

Problem 1:
---------

I am sure that this document should fail the schema, but it does not.

bug1.xml:

<?xml version='1.0'?>

<blah xmlns="blah.com"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      xsi:schemaLocation='blah.com bug1.xsd'>

  <fredHolder name="holder1">
    <fredHolder name="holder5"/>
  </fredHolder>

  <fredRef ref="holder3"/>

</blah>

bug1.xsd:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema
 attributeFormDefault="unqualified"
 elementFormDefault="qualified"
 targetNamespace="blah.com"
 xmlns="blah.com"
 xmlns:blah="blah.com"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>

<xsd:element name="fredHolder">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="fredHolder" minOccurs="0"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required"/>
  </xsd:complexType>

  <xsd:unique name="myUnique">
    <xsd:selector xpath="."/>
    <xsd:field xpath="@name"/>
  </xsd:unique>
</xsd:element>

<xsd:element name="blah">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element ref="fredHolder"/>
      <xsd:element name="fredRef">
        <xsd:complexType>
          <xsd:attribute name="ref" type="xsd:string"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:keyref name="myRef" refer="myKey">
    <xsd:selector xpath="blah:fredRef"/>
    <xsd:field xpath="@ref"/>
  </xsd:keyref>

  <xsd:key name="myKey">
    <xsd:selector xpath=".//blah:fredHolder"/>
    <xsd:field xpath="@name"/>
  </xsd:key>
</xsd:element>

</xsd:schema>

Problem 2:
---------

I am sure that this document should pass, but it does not.

bug2.xml:

<?xml version='1.0'?>

<fredHolder xmlns="blah.com"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:schemaLocation='blah.com bug2.xsd'>
  <fred name="alfred"/>
  <fredHolder>
    <fred name="alfred"/>
  </fredHolder>
</fredHolder>

bug2.xsd:

<?xml version="1.0" encoding="UTF-8"?>

<xsd:schema
 attributeFormDefault="unqualified"
 elementFormDefault="qualified"
 targetNamespace="blah.com"
 xmlns="blah.com"
 xmlns:blah="blah.com"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>

<xsd:element name="fredHolder">
  <xsd:complexType>
    <xsd:choice maxOccurs="2">
      <xsd:element name="fred">
        <xsd:complexType>
          <xsd:attribute name="name"/>
        </xsd:complexType>
      </xsd:element>
      <xsd:element ref="fredHolder"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:unique name="myUnique">
    <xsd:selector xpath="./blah:fred"/>
    <xsd:field xpath="@name"/>
  </xsd:unique>
</xsd:element>

</xsd:schema>

-- 
John Snelson, Software Engineer       DecisionSoft Ltd.
Telephone: +44-1865-203192            http://www.decisionsoft.com

Received on Wednesday, 3 October 2001 05:08:44 UTC