Subject: [xsl] Comparisons in XPath 2.0 From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Wed, 2 Jan 2002 22:40:00 +0000 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Incompatibilities XPath 1.0 v, Jeni Tennison | Thread | [xsl] Element - centric output, Maulik Modi |
[xsl] Incompatibilities XPath 1.0 v, Jeni Tennison | Date | RE: [xsl] Re: Re: Assignment no, dy, Evan Lenz |
Month |