XSLT2.0高级计算包括Cos()Sin()
正如我所知,高级计算没有现成的XSLT函数,有人知道我如何在XSLT中进行余弦/Sin()等数学运算吗?这个要求也是非常具体的,我需要扩展可以下载(而不是指向url),这样我就可以下载它并在XSL脚本中作为源代码引用。我无法下载EXSLT源文件进行尝试,因为该页面似乎存在问题。您还可以提供一个简单的示例,说明如何在脚本中引用源代码并计算一些简单的内容,如:XSLT2.0高级计算包括Cos()Sin(),xslt,xslt-1.0,xslt-2.0,exslt,Xslt,Xslt 1.0,Xslt 2.0,Exslt,正如我所知,高级计算没有现成的XSLT函数,有人知道我如何在XSLT中进行余弦/Sin()等数学运算吗?这个要求也是非常具体的,我需要扩展可以下载(而不是指向url),这样我就可以下载它并在XSL脚本中作为源代码引用。我无法下载EXSLT源文件进行尝试,因为该页面似乎存在问题。您还可以提供一个简单的示例,说明如何在脚本中引用源代码并计算一些简单的内容,如: <input> <num1>1</num1> <num2>1</num2> &l
<input>
<num1>1</num1>
<num2>1</num2>
</input>
1.
1.
输出为:
<output>
<cosOfnum1>0.54030230586</cosOfnum1>
<sinOfnum2>0.8414709848</sinOfnum2>
</output>
0.54030230586
0.8414709848
谢谢大家! Saxon 9(包括HE,使用9.6进行测试,另请参见“来自Saxon 9.6,可在所有版本中使用”)对中定义的函数具有现成的支持,以下是一个示例:
<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”
样式表中
据我所知,高级应用程序没有现成的XSLT函数
计算,有人知道我怎么做数学吗
XSLT中的余弦/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()
arccos()
,arccos()
,arctan()
,arccot()
,arccsc()
,archsin()
,archcos()
,archtan()
,archcot()
,archsec()
,
您的问题被标记为
libxslt
和xslt2.0
,这没有任何意义。如果您使用的是libxslt
,那么您已经支持EXSLTmath:sin()
和math:cos()
函数,而无需下载或引用任何内容。其他处理器可能支持自己的扩展。对于任何处理器,您都可以使用。您需要告诉我们您使用的是什么XSLT处理器,以及在什么环境中。对不起,michael.hor257k,我已经删除了该标记。@MichaelKay,我实际上是在尝试将它与javax.xml.transformer合并到我的java应用程序中,而不是用java进行计算,我想找到一种在XSLT中实现的方法。@R.C.javax.xml接口(通常称为JAXP)是几个XSLT处理器支持的接口,包括Xalan、Saxon和其他。所以这并没有告诉我们您使用的是哪个XSLT处理器。但它确实告诉我们,您处于Java环境中,这意味着使用Saxon不存在任何技术障碍,Saxon提供了标准的XPath 3.0数学函数库。