2012-04-08 38 views
1

xsl:variablesがlibxml2の述語で定義されていないようです。 それが可能か、何かが恋しいですか?私が述部から変数を使用すると、その罰金。xsl:変数が述語で定義されていません

<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

はい、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> 
+1

正しい答えを、それがかもしれませんXSLT 1.0仕様ではマッチパターンでの変数参照が許可されていませんが、XSLT 1.0プロセッサの中にはこの制限が適用されないため、プロセッサ間で移植されないXSLTコードに遭遇する可能性があります。 –

関連する問題