This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Comparisons in XPath 2.0
- From: Jeni Tennison <jeni at jenitennison dot com>
- To: www-xpath-comments at w3 dot org
- Cc: xsl-list at lists dot mulberrytech dot com
- Date: Wed, 2 Jan 2002 22:40:00 +0000
- Subject: [xsl] Comparisons in XPath 2.0
- Organization: Jeni Tennison Consulting Ltd
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi,
For all that there are lots of ways of comparing values in XPath 2.0,
there doesn't seem to be one that compares sequences.
If you have something like:
<line start="0 300" end="300 0" />
where start and end both have typed values - @start is the sequence of
two integers (0, 300) and @end is the sequence of two integers (300,
0). In this particular language, @start and @end are x,y coordinates.
How can you work out whether start and end have the same value?
@start eq @end
returns an error because the typed values for each node return a
sequence with more than one value.
@start = @end
also returns an error (I think), because it is equivalent to:
some $s in (@start) satisfies (some $e in (@end) satisfies $e eq $s)
and @start eq @end returns an error.
I think it would make more sense to say that eq can only be used with
single nodes, but that it compares sequences of simple values with a
xf:sequence-deep-equal() comparison (each simple typed value is the
same as the simple typed value with the same index in the compared
sequence). Thus:
@start = @end
would be equivalent to:
@start eq @end
which would be equivalent to:
(0, 300) eq (300, 0)
which would be false. If @end were (0, 300) instead, the comparison
would be:
(0, 300) eq (0, 300)
which would be true.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list