[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Comparisons in XPath 2.0
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|