XSLT 2.0 高级计算包括 Cos() Sin()
XSLT 2.0 Advanced calculation includes Cos() Sin()
据我所知,没有用于高级计算的现成 XSLT 函数,有人知道我如何在 XSLT 中进行 Cosine/Sin() 等数学运算吗?要求也非常具体,我需要扩展可下载(而不是指向 url),以便我可以下载它并在我的 XSL 脚本中作为源引用。我无法下载 EXSLT 源文件来尝试,因为该页面似乎有问题。您能否提供一个简单的示例,说明如何在脚本中引用源代码并计算一些简单的内容,例如:
<input>
<num1>1</num1>
<num2>1</num2>
</input>
输出为:
<output>
<cosOfnum1>0.54030230586</cosOfnum1>
<sinOfnum2>0.8414709848</sinOfnum2>
</output>
谢谢!
Saxon 9(包括 HE,使用 9.6 测试,另见 http://saxonica.com/html/documentation9.6/functions/math/sin.html saying "From Saxon 9.6, available in all editions.") does have out of the box support for the functions defined in https://www.w3.org/2005/xpath-functions/math/,这里有一个例子:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
exclude-result-prefixes="xs math"
version="2.0">
<xsl:template match="input">
<output>
<xsl:apply-templates/>
</output>
</xsl:template>
<xsl:template match="num1">
<cosOfnum1>
<xsl:value-of select="math:cos(.)"/>
</cosOfnum1>
</xsl:template>
<xsl:template match="num2">
<sinOfnum2>
<xsl:value-of select="math:sin(.)"/>
</sinOfnum2>
</xsl:template>
</xsl:stylesheet>
我还测试过,当使用命令行选项时,XmlPrime 4 可以正确运行上述样式表 --xt30
,因此它还内置了对这些功能的支持。
Altova XMLSpy 2017 还支持开箱即用的命名空间 xmlns:math="http://www.w3.org/2005/xpath-functions/math"
中的函数,但仅在 version="3.0"
样式表中。
As I know there's no out of box XSLT function for advanced
calculation, anyone have any idea how I can do math such as
Cosine/Sin()
within XSLT?
使用 FXSL 库,除其他外,还可以使用纯 XSLT 1.0 或 XSLT 2.0 编写的三角函数:
FXSL的数学模块实现:
- 众所周知的三角函数:
sin()
、cos()
、tan()
、cot()
、sec()
、csc()
- 双曲三角函数:
hsin()
、hcos()
、htan()
、hcot()
、hsec()
、hcsc()
- 指数和对数函数:
exp()
、ln()
、log10()
、log2()
、log()
、pow()
、sqrt()
- 求解单实变量方程:Newton - Raphson's 方法和 Binary Search 方法。
- 反函数:
arcsin()
、arccos()
、arctan()
、arccot()
、arcsec()
、arccsc()
、archsin()
、 archcos()
、archtan()
、archcot()
、archsec()
、archcsc()
、
据我所知,没有用于高级计算的现成 XSLT 函数,有人知道我如何在 XSLT 中进行 Cosine/Sin() 等数学运算吗?要求也非常具体,我需要扩展可下载(而不是指向 url),以便我可以下载它并在我的 XSL 脚本中作为源引用。我无法下载 EXSLT 源文件来尝试,因为该页面似乎有问题。您能否提供一个简单的示例,说明如何在脚本中引用源代码并计算一些简单的内容,例如:
<input>
<num1>1</num1>
<num2>1</num2>
</input>
输出为:
<output>
<cosOfnum1>0.54030230586</cosOfnum1>
<sinOfnum2>0.8414709848</sinOfnum2>
</output>
谢谢!
Saxon 9(包括 HE,使用 9.6 测试,另见 http://saxonica.com/html/documentation9.6/functions/math/sin.html saying "From Saxon 9.6, available in all editions.") does have out of the box support for the functions defined in https://www.w3.org/2005/xpath-functions/math/,这里有一个例子:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:math="http://www.w3.org/2005/xpath-functions/math"
exclude-result-prefixes="xs math"
version="2.0">
<xsl:template match="input">
<output>
<xsl:apply-templates/>
</output>
</xsl:template>
<xsl:template match="num1">
<cosOfnum1>
<xsl:value-of select="math:cos(.)"/>
</cosOfnum1>
</xsl:template>
<xsl:template match="num2">
<sinOfnum2>
<xsl:value-of select="math:sin(.)"/>
</sinOfnum2>
</xsl:template>
</xsl:stylesheet>
我还测试过,当使用命令行选项时,XmlPrime 4 可以正确运行上述样式表 --xt30
,因此它还内置了对这些功能的支持。
Altova XMLSpy 2017 还支持开箱即用的命名空间 xmlns:math="http://www.w3.org/2005/xpath-functions/math"
中的函数,但仅在 version="3.0"
样式表中。
As I know there's no out of box XSLT function for advanced calculation, anyone have any idea how I can do math such as
Cosine/Sin()
within XSLT?
使用 FXSL 库,除其他外,还可以使用纯 XSLT 1.0 或 XSLT 2.0 编写的三角函数:
FXSL的数学模块实现:
- 众所周知的三角函数:
sin()
、cos()
、tan()
、cot()
、sec()
、csc()
- 双曲三角函数:
hsin()
、hcos()
、htan()
、hcot()
、hsec()
、hcsc()
- 指数和对数函数:
exp()
、ln()
、log10()
、log2()
、log()
、pow()
、sqrt()
- 求解单实变量方程:Newton - Raphson's 方法和 Binary Search 方法。
- 反函数:
arcsin()
、arccos()
、arctan()
、arccot()
、arcsec()
、arccsc()
、archsin()
、archcos()
、archtan()
、archcot()
、archsec()
、archcsc()
、