[Bug 4201] Unique constraint misinterpretation.

http://www.w3.org/Bugs/Public/show_bug.cgi?id=4201

           Summary: Unique constraint misinterpretation.
           Product: XML Schema
           Version: 1.0 only
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Structures: XSD Part 1
        AssignedTo: cmsmcq@w3.org
        ReportedBy: sandygao@ca.ibm.com
         QAContact: www-xml-schema-comments@w3.org
 BugsThisDependsOn: 2543


(The same issue as bug 2543 that is opened against 1.1.)

Hi,

Proposed change for the unique constraint definition is:
Change paragraph 3.11.4 by adding a new clause 4.1.1 to make it clear that not
all fields must be present.

3.11.4 Identity-constraint Definition Validation Rules
...

4.1.1 The ·target node set· is a subset of the ·qualified node set·, that is,
every member of the ·target node set· is also a member of the ·qualified node
set· however not every member of ·taget node set· is a member of ·qualified
node
set·.
...


Why this is important?

Xerces parser has a bug 18405, which has not been resolved since 2003.
The reason for not fixing is :
" ... I (and some others I've asked) think 
that the spec seems open to interpretation here; so I'm marking this bug 
invalid for now.  I'd encourage you to pose a question to the Schema working 
group via their comments list; if you get a response that demonstrates that 
your reading is correct, please reopen this bug with the appropriate text and 
I'll try and fix it when I get a chance."

The below is the comment from Xerces parser BUG 18405 report:
================================================ 
"3 For each node in the
·target node set·
all of the
{fields},
with that node as the context node, evaluate to either an empty node-set or a 
node-set with exactly one member, which must have a simple type."

The target node set is the set of nodes on which the selector is matched.  Note 
that this condition must hold for *any* identity constraint; only in bullet 4 
of the tableau are the differences between key and unique described.  
Therefore, it seems clear that, if a selector matches, then either all of the 
fields must match or none of them must match; even for xsd:unique, you can't 
have some fields matching.
=========================================================


Thanks,
Eugene

Received on Friday, 12 January 2007 15:57:19 UTC