This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.
The problem here isn't specific to XPath 3.1, but it might be a good time to clear this issue up now... In 3.7.2 General Comparisons, Step 4 says: "The result of the comparison is true if and only if there is a pair of atomic values, one in the first operand sequence and the other in the second operand sequence, that have the required magnitude relationship. Otherwise the result of the comparison is false... " This suggests that possible outcomes are only true or false. However, the paragraph then goes on to mention one error condition. So possible outcomes are: true: e.g. true() = true() false: e.g. true() = false() FORG0006: e.g. true() = xs:yearMonthDuration('P1999Y') FORG0001: e.g. xs:yearMonthDuration('P1999Y') = xs:untypedAtomic('untyped') XPTY0004: e.g. xs:yearMonthDuration('P1999Y') = xs:dateTime('2013-01-01T00:00:00Z') (the last of which being determined statically). The discrepancy between the two statements suggests that it might be permissible to ignore all errors and return only true or false. A similar problem occurs in the test describing comparison when XPath 1.0 compatibility mode is false.
I will change this to: Otherwise the result of the comparison is false or an error.
The change promised in comment #1 does not appear in the current draft specification.
Previously, it was only changed in XPath in the case where XPath compatibility mode is true.