将String计算为xsl中的等式

时间:2014-01-11 16:12:04

标签: xslt

我将这个简单的字符串存储在变量中:

<xsl:variable name="equation">
    15+10+32+98 
</xsl:variable>

我想让xsl获取存储在这个变量中的字符串并作为数学公式处理以得到结果,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您只需要总结数字,则以下XSLT 1.0模板add将“加上分隔的字符串”作为参数并返回总和。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

  <xsl:output method="text"/>

  <xsl:template name="add">
    <xsl:param name="plusSeparatedString"/>
    <xsl:param name="sumValue" select="0"/>

    <xsl:choose>
      <xsl:when test="contains($plusSeparatedString,'+')">
        <xsl:call-template name="add">
          <xsl:with-param name="plusSeparatedString" select="substring-after($plusSeparatedString,'+')"/>
          <xsl:with-param name="sumValue" select="$sumValue + substring-before($plusSeparatedString,'+')"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>
        <xsl:copy-of select="$sumValue + $plusSeparatedString"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="/">
    <xsl:call-template name="add">
      <xsl:with-param name="plusSeparatedString" select="'4 + 6+ 8'"/>
    </xsl:call-template>
  </xsl:template>
</xsl:stylesheet>

将此测试样式表应用于任何文档(例如自身)以查看其是否有效。