John Barden: JavaScript in XSL - Netscape zeigt nix an?

Hi, ich hab ein einfaches JavaScript in einer XSL-Datei. Der Internet Explorer 6.0 zeigt alles korrekt an. Der Netscape 7.0 zeigt aber garnichts an. Nicht mal eine Fehlermeldung. So sieht die XSL aus:
--------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">

<html>
<head>
<title>test</title>
</head>
<body>

<script language="JavaScript">
<![CDATA[
document.write('This is a Test!');
]]>
</script>
</body>

</html>

</xsl:template>
</xsl:stylesheet>

Die XSL-Datei wird über diese XML-Datei aufgerufen:
--------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>

<empty/>
--------------------------------------------------------

Also in der Adresszeile des Browsers steht nur das:
C:\test\test.xml
Die XML und die XSL liegen im gleichen Verzeichnis.

Aber anscheinend wird das JavaScript beim Netscape ausgeführt, weil wenn ich ein alert reinmache, dann poppt schon eine Meldung hoch.

Wie kann ich dem Netscape jetzt beibringen, dass er das document.write auch anzeigen soll?

Bin für jede Hilfe dankbar,

Gruß
John

  1. Hi, ich hab ein einfaches JavaScript in einer XSL-Datei. Der Internet Explorer 6.0 zeigt alles korrekt an. Der Netscape 7.0 zeigt aber garnichts an. Nicht mal eine Fehlermeldung. So sieht die XSL aus:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">

    <html>
    <head>
    <title>test</title>
    </head>
    <body>

    <script language="JavaScript">
    <![CDATA[
    document.write('This is a Test!');
    ]]>
    </script>
    </body>

    </html>

    </xsl:template>
    </xsl:stylesheet>

    Die XSL-Datei wird über diese XML-Datei aufgerufen:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <?xml-stylesheet type="text/xsl" href="test.xsl"?>

    <empty/>

    Also in der Adresszeile des Browsers steht nur das:
    C:\test\test.xml
    Die XML und die XSL liegen im gleichen Verzeichnis.

    Aber anscheinend wird das JavaScript beim Netscape ausgeführt, weil wenn ich ein alert reinmache, dann poppt schon eine Meldung hoch.

    Wie kann ich dem Netscape jetzt beibringen, dass er das document.write auch anzeigen soll?

    Bin für jede Hilfe dankbar,

    Gruß
    John

    Ich weiß nicht recht, ob dir das hilft, aber nur der IE unterstützt __ganz__ XML. Die anderen Browser sind da nicht soweit. Welchen Browser benutzt du denn? Probier das mal in Netscape 7.

    1. Ich weiß nicht recht, ob dir das hilft, aber nur der IE unterstützt __ganz__ XML. Die anderen Browser sind da nicht soweit. Welchen Browser benutzt du denn? Probier das mal in Netscape 7.

      Ja, ich hab es in Netscape 7 versucht. Eben da funktioniert es nicht. Nur im IE.
      Naja, kann man nichts machen. Danke.

  2. Hi!

    Eine Reihe von Vermutungen, basierend auf der Tatsache, das du XML auslieferst (als text/xml oder application/xml):
    NN7/ Mozilla schaltet bei diesem MIME-Typ in den Strict-Modus.

    <script language="JavaScript">

    Sollte <script type="text/javascript"> lauten

    <![CDATA[
    document.write('This is a Test!');
    ]]>

    Aufgrund der Tatsache, das NN7 bei XML-Dokumenten kein HTML-DOM http://www.w3.org/TR/DOM-Level-2-HTML/ sondern nur DOM-Core [http://www.w3.org/TR/DOM-Level-2-Core/] anwendet, kann das nicht funktionieren, da in DOM-Core das document-Object keine Methode write() besitzt. Überprüfe, welches DOM bei dir angewendet wird mittels

    alert( document );

    Bei Anwedung von DOM-Core sollte object XMLDocument ausgegeben werden, sollte NN7 DOM-HTML anwenden, so wird er object HTMLDocument ausgegeben werden.

    Alternativ zu write() würde ich übrigens die diversen DOM-Methoden für das kreieren und einhängen von Textknoten empfehlen.

    Gruß Herbalizer

    --
    SELF-Code: (http://emmanuel.dammerer.at/selfcode.html)
    sh:( fo:) ch:? rl:( br:> n4:& ie:% mo:} va:} de:] zu:) fl:{ ss:) ls:& js:|
  3. Hallo,

    Hi, ich hab ein einfaches JavaScript in einer XSL-Datei. Der Internet Explorer 6.0 zeigt alles korrekt an. Der Netscape 7.0 zeigt aber garnichts an. Nicht mal eine Fehlermeldung.

    Oh doch er tut es (der Ns 7), er sagt dir, dass "document.write is not a function" und zwar in der Javascript-Console.

    Probiere es aus:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">

    <html>
    <head>
    <title>test</title>
    </head>
    <body>

    <script language="JavaScript">
    <![CDATA[
    alert('This is a Test!');
    ]]>
    </script>
    </body>

    </html>

    </xsl:template>
    </xsl:stylesheet>

    Du muss deine JavaScript etwas anderes gestalten.

    Grüße
    Thomas