[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Michael Kay" <mike@s...>
  • To: <smcardle@s...>
  • Date: Wed, 21 Mar 2007 19:09:44 -0000


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]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member