Problems with keys and keyrefs

Hi,
I'm experiencing schemas for a few days and I have some problems
understanding the behavior of keys and keyrefs.

For example the schema:
<schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified" xmlns:ns="http://tempuri.org/XMLSchema.xsd"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="document">
    <complexType>
        <sequence>
            <element name="keyList" type="ns:keyListType">
            <key name="aKey">
                <selector xpath="ns:key" />
                <field xpath="." />
            </key>
            </element>
            <element name="keyRefList" type="ns:keyListType">
            <keyref name="aKeyRef" refer="ns:aKey">
                <selector xpath="ns:key" />
                <field xpath="." />
            </keyref>
            </element>
        </sequence>
    </complexType>
</element>
<complexType name="keyListType">
    <sequence>
        <element name="key" type="string" maxOccurs="unbounded" />
    </sequence>
</complexType>
</schema>

runned over the XML:

<document xmlns="http://tempuri.org/XMLSchema.xsd">
 <keyList>
  <key>id1</key>
  <key>id2</key>
  <key>id3</key>
 </keyList>
 <keyRefList>
  <key>id1</key>
  <key>id1</key>
 </keyRefList>
</document>

rises an error: The keyref '{http://tempuri.org/XMLSchema.xsd}aKey' does not
resolve to a key for the Identity Constraint
'{http://tempuri.org/XMLSchema.xsd}aKeyRef'.

The problem disappear if I declare the keys on the "document" element scope.

I hope there's someone who can help me.

Cheers,
Gabriele

Received on Saturday, 2 March 2002 10:29:53 UTC