xsl:variable未在谓词中定义

时间:2012-04-08 21:24:33

标签: xslt xls predicate

看起来xsl:变量未在libxml2的谓词中定义。 可能还是我错过了什么?如果我使用谓词之外的变量,那就好了。

    <xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" />
    <xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />

   <xsl:template match="*[translate( name(), $uppercase, $smallcase ) = 'receipt']"> 
      <xsl:apply-templates select="Process"/>
      <xsl:apply-templates select="Encode"/> 
    </xsl:template>

1 个答案:

答案 0 :(得分:1)

是的,在XSLT 1.0中,你不能在match属性中使用变量,但我相信你可以使用XSLT 2.0。

也许你可以做这样的事情:(请注意,这可能不适合你,这取决于你的XSL的其余部分是如何编写的)

<xsl:template match="*">
    <xsl:choose>
        <xsl:when test="translate( name(.), $uppercase, $smallcase ) = 'receipt'">
            <xsl:apply-templates select="Process"/>
            <xsl:apply-templates select="Encode"/>
        </xsl:when>
        <xsl:otherwise>
            <!-- do whatever else should be done -->
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>