[xsl] xPath function in xslt 3.0

Subject: [xsl] xPath function in xslt 3.0
From: "Leo Studer leo.studer@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 10 Dec 2018 18:21:17 -0000
Hello

The function below is working well in xQuery 3.0 but not in xslt 3.0 (Saxon-EE
9.8.0.12 in Oxygen) where it returns NaN. I cannot see the problem?
Any suggestion?

Thanks in advance
Leo


  <xsl:variable name="exchangeRate" select="function ($fromCurrency as
xs:string, $toCurrency as xs:string) as xs:double{
    if ($fromCurrency = $toCurrency) then 1.0 else
    number(doc(concat('http://www.floatrates.com/daily/',$fromCurrency,'.xml
<http://www.floatrates.com/daily/',$fromCurrency,'.xml>'))
    //item[baseCurrency=$fromCurrency and
targetCurrency=$toCurrency]/exchangeRate)
    }"/>

  <xsl:template match="preis">
    <xsl:value-of select="$exchangeRate('USD','CHFb) * ."/>
  </xsl:template>




Whereas in xQuery the same function works as it is expected
declare variable $exchangeRate := function ($fromCurrency as xs:string,
$toCurrency as xs:string) as xs:double{
        if ($fromCurrency = $toCurrency) then 1.0 else
        number(doc(concat('http://www.floatrates.com/daily/
<http://www.floatrates.com/daily/>',$fromCurrency,'.xml'))
        //item[baseCurrency=$fromCurrency and
targetCurrency=$toCurrency]/exchangeRate)
};

Current Thread