XSLT逻辑覆盖临时变量

时间:2013-03-22 08:58:08

标签: xslt

我们如何才能达到以下逻辑。

UniqueID是临时变量.PALLET_NUMBER来自输入。

如果PALLET_NUMBER!= NULL则

UniqueID = substring(PALLET_NUMBER,10)

如果PALLET_NUMBER = NULL则

UniqueID = substring(CARTON_NUMBER,7)

我们可以从上述两个条件中获取UniqueID的值。这些事情发生在迭代循环中。我们如何覆盖UniqueID临时变量。

后来因为

我们需要提出一个条件
<foreach>   
 If previous UniqueID != current UniqueID then

        <Some code>
        <IF>
</foreach>

2 个答案:

答案 0 :(得分:1)

您无法覆盖xslt中的变量。

您可能需要查找xslt扩展函数以实现目标。

答案 1 :(得分:0)

正如Treemonkey所说,不可能覆盖变量,但你可以实现类似于使用递归描述的东西:

假设你有这样的东西:

<xsl:for-each select="my/node/isNamed/something" />

你可以这样做:

<xsl:variable name="items" select="my/node/isNamed/something" />
<xsl:apply-templates select="$items[1]">
  <xsl:with-param name="remainder" select="$items[position() > 1" />
</xsl:apply-templates>

<!-- Separate template -->
<xsl:template match="something">
  <xsl:param name="remainder" />
  <xsl:param name="lastId" />

  <xsl:variable name="uniqueId" select="..." />
  <!-- Contents of the xsl:for-each -->

  <xsl:apply-templates select="$remainder[1]">
    <xsl:with-param name="remainder" select="$remainder[position() > 1]" />
    <xsl:with-param name="lastId" select="$uniqueId" />
  </xsl:apply-templates>
</xsl:template>