xsl-list
[Top] [All Lists]

[xsl] Unexpected Result from 'eq' Expression Involving a Node

2018-05-23 10:00:46
Using latest Saxon in an XSLT 3 transform I have this instruction:

<xsl:message>+ [DEBUG] xs:boolean(@id eq 'x8AC8E061C912') = "{xs:boolean(@id eq 
'x8AC8E061C912')}"</xsl:message>

I expected the value of the xs:boolean() to be "true" or "false".

However, the value I get is "" (empty sequence).

If I change "eq" to "=" or if I wrap "@id" in string() then I get the expected 
true or false result (which also suggests that my understanding of "eq" is not 
complete).

I don't see anything in the definition of the 'eq' operator or the xs:boolean() 
function that suggests that it would ever return an empty sequence, so I'm 
wondering what I'm missing in the spec that allows xs:boolean() to return an 
empty sequence in this case (or in any case)?

I guess I was also expecting "eq" to imply casting of the left-hand operand to 
an atomic type which it does not appear to do.

The behavior is the same in XSLT 2 (at least using Saxon), so clearly this is 
not new with XSLT 3 but I'm still surprised.

Thanks,

Eliot

--
Eliot Kimber
http://contrext.com
 
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>