1

看起来 xsl:variables 没有在 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>
4

1 回答 1

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>
于 2012-04-08T21:48:04.210 回答