No, neanche così. Ma grazie per i suggerimenti: a forza di fare delle prove ho trovato l'errore.

In realtà non serve il ciclo for-each, e nemmeno il test if.

Bisogna sostituire la seguente porzione di codice:

codice:
<xsl:template match="w:r">
  <xsl:if test="w:footnoteReference">
    <xsl:text>\footnote{ </xsl:text>
    <xsl:call-template name="footnote">
      <xsl:with-param name="fid"> 
        <xsl:value-of select="//@w:id" />
      </xsl:with-param>
     </xsl:call-template>
     <xsl:text>}</xsl:text>
   </xsl:if>
</xsl:template>
Con questa:

codice:
<xsl:template match="w:footnoteReference">
      <xsl:text>\footnote{ </xsl:text>
    <xsl:call-template name="footnote">
      <xsl:with-param name="fid"> 
        <xsl:value-of select="@w:id" />
      </xsl:with-param>
     </xsl:call-template>
     <xsl:text>}</xsl:text>
</xsl:template>
Grazie comunque per l'attenzione !