Ti ringrazio per l'aiuto.
Nonostante consulto praticamente ogni 2 secondi php.net, quell'esempio mi era sfuggio.

Ora sono riuscito a fare andare lo script con il seguente codice. Lo posto nel caso interessi a qualcuno:
codice:
<?xml version="1.0" ?>    
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    
    <xsl:param name="page"/>
    <xsl:template match="/">    
        <table align="center" border="0" cellspacing="0" cellpadding="0" width="95%" heigh="100%">
         <xsl:for-each select="menu/sezione">
         <xsl:if test="@value[.= $page]">
             <xsl:apply-templates select="voci"/>
         </xsl:if>
         </xsl:for-each>
         </table>
    </xsl:template>

    <xsl:template match="voci">
      <xsl:apply-templates select="riga"/>
    </xsl:template>

    <xsl:template match="riga"> 
     <tr><td align="center" >
       <a>
       <xsl:attribute name="href">
          <xsl:value-of select="@url"/>
       </xsl:attribute>
       <xsl:value-of select="text()"/>
       </a>
       

       </td></tr>
  </xsl:template>

</xsl:stylesheet>
Prima i chiudere, volevo fare un'altra domanda.
Nella mia versione, il controllo viene fatto sull'attrivuto value del tag <sezione>.

Poniamo che io invece avessi, dentro <sezione> un tag di questo tipo:
<titolo> home </titolo>
e avessi voluto fare il controllo sul contenuto del tag.
Ho provato a scrivere

codice:
  <xsl:if test="titolo = $page">
oppure

codice:
<xsl:if test="titolo[.= $page]">
Ma non funzionano. Probabilmente devo mettere il contenuto del tag titolo dentro una variabile e fare il confronto con quella, però non so come si fa e nelle guide che ho consultato non ci sono esempi di questo tipo.

Grazie per l'attenzione e per l'aiuto.

Ciao e alla prossima...