XSLT 2.0使用for-each循环设置变量

时间:2014-02-10 20:27:13

标签: xslt xslt-2.0

我想创建一个包含相应元素的完整PACKAGE名称路径的变量。 (只是为了以后能够比较路径)

现在我有XSLT结构:

<xsl:for-each select="ancestor-or-self::*">
   <xsl:if test="local-name()='PACKAGE'">
      <xsl:text>/</xsl:text>
      <xsl:value-of select="NAME/."/>
      <xsl:if test="position() != last()">
      </xsl:if>
   </xsl:if>
</xsl:for-each> 

上面的结构导致了正确的路径,但是当我尝试将该输出放入变量时(通过将<xsl:variable name="myPath"></xsl:variable>置于foreach之外)变量保持为空。

为什么在:

<xsl:variable name="myPath">
  <xsl:for-each select="ancestor-or-self::*">
    <xsl:if test="local-name()='PACKAGE'">
     <xsl:text>/</xsl:text>
     <xsl:value-of select="NAME/."/>
       <xsl:if test="position() != last()">
       </xsl:if>
    </xsl:if>
  </xsl:for-each>
</xsl:variable>

$myPath仍然空着? 我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

确保在代码中的某个地方使用该变量,否则XSLT处理器可以根本不执行代码。因此,在没有看到更多信息的情况下,我认为Saxon根本不执行变量的值,因为您不使用它。