Ho spostato lo script dentro il body e questa volte glielo ho pure scritto tutto, ovviamente eliminando il riferimento per la sua inclusione nell'HEAD; riporto una porzione dell'xsl per maggiore chiarezza:

codice:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
............
xmlns:fn="http://www.w3.org/2005/02/xpath-functions"
>

<xsl:output method="html"/>

  <xsl:template match='r:RDF'>
      
    <html>
    
    <head>
      <title>Annotazioni</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <script type="text/javascript" src="tabber.js"></script>
      <link rel="stylesheet" href="example.css" type="text/css" media="screen"></link> 
    </head>
    
    <body>
     
    <script type="text/javascript">
      function time(text)
        {
          document.open();
          document.write(text);
          document.close();
        }
    </script>
     
      
      <h1>Annotazioni</h1>
    
    <div class="tabber">
    
    
    <div class="tabbertab">
    .............
    .............
                <td width="100%" bgcolor="#e7e4ba">
                  Annotazione: 
                      
                      <script>
                      time("ciao");
                      </script>
                                    
                  
</br>
                  <xsl:apply-templates select="_2:ipotesi"/>
                  
    .............
    .............
    </div>
    
    
    .............
    .............
      </div>
    </body>
  </html> 
</xsl:template>
ma il risultato è sempre lo stesso: un malinconico "ciao"......; la cosa che mi stranizza è perchè prima firefox esegue questo codice javascript e poi tralascia tutto il resto (nel caso di document.write, mentre se metto un alert, prima fa vedere l'alert e poi carica correttamente la pagina).