XSLT - 从模板调用的结果中删除最后一个

时间:2013-11-25 05:57:31

标签: xml xslt xslt-1.0

我有一个xml,如下所示

<employee id="e001">
<sal month="jan">
<basic>5000</basic>
<commission>3000</commission>
<sal>
<sal month="feb">
<basic>5000</basic>
<commission>3500</commission>
<sal>
<employee>

我想将其转换为xml,如下所示。

<emp id="e001" sal="5000-3000/5000-3500"></emp>

我正在使用参数employee / *

调用模板,如下所示
<xsl:template name="salCnsldtd">
    <xsl:param name="list" />
    <xsl:for-each select="$list">
      <xsl:value-of select="concat(basic,'-',commission,'/')" />
    </xsl:for-each>
</xsl:template>

模板调用后我得到的结果如下所示。

<emp id="e001" sal="5000-3000/5000-3500/"></emp>

如何从sal中删除最后一个斜杠(/)。请帮助我找到更好的解决方案或删除斜线。谢谢。

1 个答案:

答案 0 :(得分:1)

试试这个:

<xsl:template name="salCnsldtd">
  <xsl:param name="list" />
  <xsl:variable name="compensation">
    <xsl:for-each select="$list">
      <xsl:value-of select="concat('/',basic,'-',commission)" />
    </xsl:for-each>
  </xsl:variable>
  <xsl:value-of select="substr($compensation,2)"/>
</xsl:template>

我将分隔符“/”移动到每个元素的前面,然后剥离最后一个字符串中的第一个。