Расчет экспоненты или мощности в saxon9HE - PullRequest
0 голосов
/ 06 сентября 2018

Подскажите, пожалуйста, как выполнять математические функции, такие как power в XSLT2 с Saxon 9HE.

Получение следующей ошибки: 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 голосов
/ 06 сентября 2018

Есть стандартизированные XPath math функции, такие как math:pow, например. math:pow(2, 4) в пространстве имен https://www.w3.org/2005/xpath-functions/math например, с объявлением пространства имен xmlns:math="http://www.w3.org/2005/xpath-functions/math", доступным во всех выпусках Saxon (по крайней мере с 9.8, но я думаю, что это также работает с более ранними версиями, такими как 9.7 и 9.6 (документация *) 1008 * говорит с 9.6 во всех изданиях).

...