La idea de restar 1 sí funciona (aunque personalmente no creo que sea la mejor).
Los fallos que tenías en tu código eran dos:
1. Te faltaban comillas simples al select de tu variable FechaCarga
2. Tenías mal la expresión XPath en el template BuscaCargaAnterior
Tu XSL queda de la siguiente manera:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="cargas">
<xsl:apply-templates select="carga"/>
</xsl:template>
<xsl:template match="carga">
<xsl:variable name="FechaCarga" select="'21/04/2004'"/>
<xsl:if test="@fecha[.=$FechaCarga]">
<xsl:call-template name="BuscaCargaAnterior">
<xsl:with-param name="NumOrd" select="number(@numero)-1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="BuscaCargaAnterior">
<xsl:param name="NumOrd"/>
<xsl:for-each select="//carga/@numero[.=string($NumOrd)]">
<xsl:value-of select="//carga/@fecha"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Ciaoo |