Uniqueness and case sensitivity

Given the following XML segment:

<foos>
    <foo id="1490" name="myName"/>
    <foo id="9091" name="myNAME"/>
</foos>

shouldn't a uniqueness constraint:

    <xsd:element name="foos">
    <xsd:complexType>
        <xsd:sequence>
        <xsd:element name="foo" type="foo_type" maxOccurs="unbounded"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:unique name="name_id">
        <xsd:selector xpath="foo"/>
        <xsd:field xpath="@name"/>
    </xsd:unique>
    </xsd:element>

throw an error?  According to XML Schema Part 1: Structures:

4.1 *If *the {identity-constraint category} 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#identity-constraint_name> 
is /unique/, *then *no two members of the ·qualified node set· 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#key-qns> have 
·key-sequences· 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#key-ks> whose 
members are pairwise equal, as defined by Equal 
<http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes#equal> in 
[XML Schemas: Datatypes] 
<http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#ref-xsp2>.

where Equal is:


        4.2.1 equal

Every ·value space· 
<http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space> 
supports the notion of equality, with the following rules:

    * for any /a/ and /b/ in the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>,
      either /a/ is equal to /b/, denoted /a = b/, or /a/ is not equal
      to /b/, denoted /a != b/
    * there is no pair /a/ and /b/ from the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>
      such that both /a = b/ and /a != b/
    * for all /a/ in the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>,
      /a = a/
    * for any /a/ and /b/ in the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>,
      /a = b/ if and only if /b = a/
    * for any /a/, /b/ and /c/ in the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>,
      if /a = b/ and /b = c/, then /a = c/
    * for any /a/ and /b/ in the ·value space·
      <http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/datatypes.html#dt-value-space>
      if /a = b/, then /a/ and /b/ cannot be distinguished (i.e.,
      equality is identity)

Shouldn't unique be case-sensitive?

Thanks,
Jeff Dahl

Received on Friday, 9 April 2004 17:58:32 UTC