我想知道在 XLST 中我们是否可以使用 math:abs(...) ? 我在某处看到了这个,但它不起作用。 我有这样的东西:
<tag>
<xsl:value-of select="./product/blablaPath"/>
</tag>
我尝试做类似的事情:
<tag>
<xsl:value-of select="math:abs(./product/blablaPath)"/>
</tag>
但不起作用。我使用的是 java 1.6 语言。
最佳答案
这是实现 abs()
函数的单个 XPath 表达式:
($x >= 0)*$x - not($x >= 0)*$x
计算结果为 abs($x)
。
下面是一个简短的演示:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:param name="x" select="."/>
<xsl:value-of select=
"($x >= 0)*$x - not($x >= 0)*$x"/>
</xsl:template>
</xsl:stylesheet>
当此转换应用于以下 XML 文档时:
<t>
<num>-3</num>
<num>0</num>
<num>5</num>
</t>
想要的、正确的结果(每个数字上的 abs())产生:
<t>
<num>3</num>
<num>0</num>
<num>5</num>
</t>
关于java - XSLT:我们可以使用 abs 值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190893/