1

libxml2 の述語に xsl:variables が定義されていないようです。それは可能ですか、それとも何か見逃していますか?述語から変数を使用すると、問題ありません。

    <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 に答える