Hi,

I think I found a bug in 8.0.3 (and earlier)

declare function local:shortcircuit($a) {
  if ($a castable as xs:double
      and xs:double($a) gt 0) then
      $a
  else ()
};

local:shortcircuit('foo')

=> [FORG0001] Cannot cast to xs:double: "foo".

In http://www.w3.org/TR/xpath/#booleans

  "An and expression is evaluated by evaluating each operand and
   converting its value to a boolean as if by a call to the boolean function.
  The result is true if both values are true and false otherwise. The right
  operand is not evaluated if the left operand evaluates to false."

Haven't tested it for other conditionals.

--Marc

Reply via email to