XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
RE: [xml-dev] How to Unique contraint


Please don't go off-list! People finding the start of a thread in the
archives want to know what the answer was. 

> 
> This file is not valid:
> The fields XPATH selector of the key/unique/keyref identity 
> constraint 'port' 
> must evaluate to exactly 0 or 1 nodes.
> 
> This obviously means that the unique constraint can not take 
> into consideration more than one of the attributes i.e.
> 
>     <xs:field xpath="@debug-port | @port"/> </xs:unique>
> 
> returns 2 nodes both @debug-port and @port and is therefor 
> invalid under this context.

You're quite right. The schema is valid but it's not testing the condition
you want to test.

Logically, the condition you want is:

 <xs:unique name="port">
   <xs:selector xpath="anElement/@debug-port | anElement/@port"/>
   <xs:field xpath="."/> 
 </xs:unique>

but the spec seems to have scuppered you by not allowing attributes in the
xs:selector.

I can't think of any way around that. You can wait for assertions, of
course, which will allow

count(distinct-values(anElement/(@debug-port, @port))) lt 2

provided that the WG permits such XPath expressions to be used in
assertions.

Michael Kay
http://www.saxonica.com/



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS