[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
RE: [xml-dev] How to Unique contraint
- From: "Michael Kay" <mike@saxonica.com>
- To: <smcardle@spansurf.com>
- 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]