Re: Question about uniqueness

Hi Eric,

Eric Jain wrote:

>>If your instance document use a default namespace and the element names
>>you use for uniqueness are qualified then the tools are wrong.
>>    
>>
Hmm, I just tested this with the following instance and schema 
(basically the same as you with the element declaration filled in)

1.xsd:
------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" targetNamespace="urn:org:expasy:models">
  <xs:element name="swissprot">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="entry" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="key" use="required" type="xs:string"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
    <xs:key name="entryKey">
      <xs:selector xpath="entry"/>
      <xs:field xpath="@key"/>
    </xs:key>
  </xs:element>
</xs:schema>

and the instance:
-----------------
<swissprot xmlns="urn:org:expasy:models" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="urn:org:expasy:models 1.xsd">
 <entry key="P30089"/>
 <entry key="P30089"/>
</swissprot>

>SQC, XSV, MSXML, Oracle, and Sun's MSV all agree that the following is
>valid, and complain if entryKey is duplicated:

Well, you can't check this constraint with SQC since identity 
constraints require an instance document.

XSV, MSXML, XML Spy4.4 all say that the above example is valid. This is 
correct since they can't find an unqualified entry element. What version 
of XSV and MSXML are you using to get them to complain about the 
duplicate key?
I don't have access to Oracle and MSV so I can't check with them.

If you add a namespace declaration to the schema 
(xmlns:t="urn:org:expasy:models") and then use this prefix in the XPath 
expression both XSV, MSXML and XML Spy pick up the duplicate key.

><swissprot
> xmlns="urn:org:expasy:models"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:schemaLocation="urn:org:expasy:models swissprot.xsd"
>  
>
> <entry key="P30089"/>
> <entry key="P30090"/>
></swissprot>
>
>
><xsd:schema
> xmlns="urn:org:expasy:models"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> targetNamespace="urn:org:expasy:models"
> elementFormDefault="qualified"
>  
>
> ...
> <xsd:key name="entryKey">
>  <xsd:selector xpath="entry"/>
>  <xsd:field xpath="@key"/>
> </xsd:key>
> ...
></xsd:schema>
>
This should not work...

Cheers,
/Eddie

>
>
>--
>Eric Jain
>
>  
>

Received on Wednesday, 11 September 2002 04:37:16 UTC