saxon9HE中的指数或幂计算

时间:2018-09-06 11:43:26

标签: xslt-2.0

请建议如何使用Saxon 9HE在XSLT2中执行数学功能,例如

出现以下错误: Cannot find a matching 2-argument function named {http://exslt.org/math}power()

XML:

<root><num>12.3</num></root>

XSLT 2.0:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:math="http://exslt.org/math"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
extension-element-prefixes="exsl math">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>

<!--1/(1+e^(-t))--><!-- this is required formula -->

<xsl:template match="num">
    <xsl:variable name="varE"><xsl:value-of select="."/></xsl:variable>
    <xsl:variable name="varT"><xsl:text>0.718</xsl:text></xsl:variable>
    <xsl:variable name="varPower">
     <xsl:value-of select="1 div (1 + math:power(number($varE), number(-$varT)))"/>
    </xsl:variable>

    <xsl:value-of select="$varPower"/>
</xsl:template>

</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

有XPath标准化的math函数,例如math:pow,例如math:pow(2, 4)在命名空间https://www.w3.org/2005/xpath-functions/math中,例如在Saxon的所有版本中都可以使用命名空间声明xmlns:math="http://www.w3.org/2005/xpath-functions/math"(至少在9.8中可用,但我认为它也可以在9.7和9.6等早期版本中使用(文档{ {3}}表示从9.6开始的所有版本。