XSLT:我们可以使用abs值吗? [英] XSLT: can we use abs value?

查看:111
本文介绍了XSLT:我们可以使用abs值吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道在XLST中我们是否可以使用数学:abs(...)?
我在某个地方看到了它,但它不起作用。
我有类似的东西:

I would like to know if in XLST can we use the math:abs(...) ? I saw this somewhere but it does not work . I have something like:

<tag>
  <xsl:value-of select="./product/blablaPath"/>
</tag>

我试图做类似的事情:

<tag>
  <xsl:value-of select="math:abs(./product/blablaPath)"/>
</tag>

但不起作用。我正在使用java 1.6语言。

but does not work. I'm using java 1.6 language.

推荐答案

这是一个单一的XPath表达式实现 abs()功能:

($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())已生成

the wanted, correct result (abs() on every number) is produced:

<t>
  <num>3</num>
  <num>0</num>
  <num>5</num>
</t>

这篇关于XSLT:我们可以使用abs值吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆