java - XSLT:我们可以使用 abs 值吗?

标签 java xslt

我想知道在 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/

相关文章:

java - Neo4j - Java 堆空间。错误的查询或设置?

java - 将 Maven 子模块打包到单个存档中

c# - 当我使用 asp.net 从 xml 文件写入/读取时保留回车符

xml - 引用 XML 中的另一个元素

xml - XSLT 列表前 50

Java图像沿列表中的点移动并使用线性插值

java - 如何在java中将时间戳转换为时分秒

java - 如何将一个项目作为 JAR 添加为另一个项目的依赖项? ( Gradle )

xml - 使用 XSL 合并和排序多个 XML 文件

xml - xslt中count属性的范围是多少?