ThomasM: Brower, XSL und Javascript

Beitrag lesen

Hallo Frank,

Versteht FF (bzw. Opera) Javascript nicht innerhalb einer XSL? Ich kriege nicht mal ein simples Hallo Welt zum Laufen. Im IE funktioniert das ohne Probleme.

Ohne dieses "Hallo Welt"-Beispiel lässt sich wenig zu Deinem konkreten Problem sagen. Der folgende Test funktioniert mit IE 7 und Opera 9.62, aber nicht mit Firefox 3.03:

<?xml version="1.0" encoding="UTF-8"?>  
<?xml-stylesheet href="hallo_welt_mit_js.xsl" type="text/xsl"?>  
<meldung>Hallo Welt!</meldung>
<?xml version="1.0" encoding="UTF-8"?>  
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
<xsl:output method="xml" encoding="UTF-8" media-type="text/html"  
  doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"  
  doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>  
  <!-- media-type="application/xhtml+xml" ändert nichts -->  
  
  <xsl:template match="/">  
    <html>  
      <head>  
        <title>Test</title>  
        <script type="text/javascript">  
          <xsl:text disable-output-escaping="yes">  
          //&lt;![CDATA[</xsl:text>  
          <xsl:text>  
          window.onload=function()  
          {  
            alert("</xsl:text><xsl:value-of select="meldung"/><xsl:text>");  
          }  
          </xsl:text>  
          <xsl:text disable-output-escaping="yes">  
          //]]&gt;  
          </xsl:text>  
        </script>  
      </head>  
      <body><p>Inhalt von meldung als JS-Ausgabe.</p></body></html>  
    </xsl:template>  
  
</xsl:stylesheet>

Für Firefox könnte die Angabe von type="text/xml" oder "application/xml" im XML-Dokument nützlich sein, funktioniert im Beispiel aber ebenfalls nicht und zudem zeigt dann der IE den XML-Baum an. Clientseitiges XSLT ist AFAIK nach wie vor nicht für Browser- bzw. Plattform-übergreifende Web-Anwendungen geeignet. In geschlossenen Umgebungen sieht das anders aus. Versuche die Transformation auf dem Server umzusetzen oder transformiere aus dem JavaScript-Kontext heraus, siehe Archiv).

Das direkt transformierte Ergebnis funktioniert übrigens problemlos im FF 3.03:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html>  
  <head>  
    <title>Test</title>  
    <script type="text/javascript">  
      //<![CDATA[  
      window.onload=function()  
      {  
        alert("Hallo Welt!");  
      }  
      //]]>  
    </script>  
  </head>  
  <body>  
    <p>Inhalt von meldung als JS-Ausgabe.</p>  
  </body>  
</html>

Grüße,
Thomas