It looks like the xsl:variables are not defined in the predicates in libxml2.
Is it possible or I miss something ? If I use the variable out of the predicate, then its fine.
<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>
Yes in XSLT 1.0, you cannot use variables inside the match attribute but I believe in XSLT 2.0 you can.
Maybe you can do something like this instead: (note that this may not work for you as-is, it depends on how the rest of your XSL is written)