据我所知,没有用于高级计算的XSLT功能,任何人都不知道如何在XSLT中进行数学运算,如余弦/ Sin()?该要求也非常具体,我需要扩展可下载(而不是指向一个URL),以便我可以下载它并在我的XSL脚本中作为源引用。我无法下载EXSLT源文件尝试,因为它似乎有该页面的问题。您还可以提供一个简单的示例,说明如何在脚本中引用源并计算简单的内容,如:
<input>
<num1>1</num1>
<num2>1</num2>
</input>
并输出为:
<output>
<cosOfnum1>0.54030230586</cosOfnum1>
<sinOfnum2>0.8414709848</sinOfnum2>
</output>
谢谢!
答案 0 :(得分:1)
Saxon 9(包括HE,用9.6测试,另见http://saxonica.com/html/documentation9.6/functions/math/sin.html说“来自Saxon 9.6,所有版本都有。”)确实对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"
样式表。
答案 1 :(得分:1)
据我所知,没有开箱即用的XSLT功能 计算,任何人都知道如何做数学如 XSLT中的
Cosine/Sin()
?
使用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()
< / LI>
arcsin()
,arccos()
,arctan()
,arccot()
,arcsec()
,arccsc()
,archsin()
,{{ 1}},archcos()
,archtan()
,archcot()
,archsec()
,