看起来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>
答案 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>