2010-02-13 6 views
1

Je suis en train d'affecter la position d'un élément comme celui-ci:XSL: Affectation du résultat de la position() à une variable

<xsl:variable name="offset" select="ancestor::myparent/position() * 8"/> 

Je suis en train de montrer le résultat du calcul de la production, de sorte l'utilisation d'un sélecteur ne suffit pas. xsltproc génère l'erreur suivante:

XPath error : Invalid expression 
ancestor::myparent/position() * 8 
          ^
compilation error: file foo.xsl line 10 element variable 
XSLT-variable: Failed to compile the XPath expression 'ancestor::myparent/position() * 8'. 

Existe-t-il un moyen de le faire?

Répondre

2

position() est disponible uniquement en référence à un contexte spécifique. Lorsque vous traitez l'élément myparent, vous devez alors définir la variable.

<xsl:template match="myparent"> 
    <xsl:variable name="offset" select="position() * 8"/> 
    <xsl:apply-templates> 
    <xsl:with-param name="offset" select="$offset"/> 
    </xsl:apply-templates> 
</xsl:template> 

Quelque chose comme ci-dessus. Assurez-vous d'ajouter un paramètre aux modèles qui ont besoin du décalage.

Questions connexes