Florian: XSL JavaScript

Hallo,

ich habe schón viele Beispiele gesehen bzw. gefunden, wie ich JavaScript Code in HTML einbetten kann. Habe aber nix gefunden, wie ich JavaScriptCode in XSLT einbetten kann, also wie ich Funktionen Definieren kann, sie aufrufen kann usw...

Wie funktioniert das?
Benötige es da ich in meinem xslt-sheet mit Select-Boxen arbeiten muß, jedoch das XML-File nicht verändern darf.

MFG

Florian

  1. Hallo

    Das sollte ganz einfach sein. Schreib die JS-Blöcke einfach in einen CDATA-Tag am entsprechenden Ort deines Stylesheets...

    Grüsse

    1. Hallo

      Das sollte ganz einfach sein. Schreib die JS-Blöcke einfach in einen CDATA-Tag am entsprechenden Ort deines Stylesheets...

      Grüsse

      Wie sieht denn so ein CDATA-Tag aus?
      Kann ich den an jede Stelle im Sheet schreiben, oder muß dieser am Anfang der XSLT-Datei rein?

      MFG

      Florian

      1. Hallo

        Kann grundsätzlich überall sein, ein CDATA. Anbei mal ein Schnipsel aus einem meiner Templates:

        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
        <meta http-equiv="cache-control" content="no-cache"/>
        <meta http-equiv="pragma" content="no-cache"/>
        <META HTTP-EQUIV="Expires" CONTENT="-1"/>
        <link rel="stylesheet" href="/css/fonts.css"/>
        <title>Editieren eines Dokumentes</title>
        <SCRIPT SRC="/js/xparse.js"></SCRIPT>
        <script language="javascript">
        var g_xml = "<xsl:variable name="prep1" select="translate(ccxml,'&#10;','|')"/><xsl:variable name="prep" select="translate($prep1,'&#13;','')"/><xsl:value-of select="translate($prep,'&#x22;','¦')"/>";
        <![CDATA[
        var xhelp = 11;
        //alert (g_xml);
        g_xml = unesc(g_xml); // reget double quotes and returns
        //alert (g_xml);

        ...

        ]]>
        </script>
        </head>

        Hoffe, dies hilft weiter.

        Grüsse
        gant

        1. Nachtrag:

          Der CDATA-Bereich dient dazu, teile eines Templates zu definieren, welche vom Parser nicht geparst werden. d.h. alles innerhalb von CDATA wird genauso in die Ausgabedatei übernommen, wie es im Template steht...

          1. Danke, werde es ausprobieren.

            MFG

            Florian

  2. Hi,

    ich habe schón viele Beispiele gesehen bzw. gefunden, wie ich JavaScript Code in HTML einbetten kann. Habe aber nix gefunden, wie ich JavaScriptCode in XSLT einbetten kann, also wie ich Funktionen Definieren kann, sie aufrufen kann usw...

    Ich wüßte keinen XSLT-Prozessor, der Javascript kann...

    Oder willst Du Javascript im erzeugten HTML haben?
    Dann unterscheiden sich script-Elemente nicht wesentlich von anderen HTML-Elementen - außer daß man wegen CDATA ggf. aufpassen muß.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi Andreas,

      Ich wüßte keinen XSLT-Prozessor, der Javascript kann...

      ich kenne da sogar zwei :-) MSXML ab Version 3, und Xalan-Java.

      Gruß,
      Martin

      1. Hallo,

        Ich wüßte keinen XSLT-Prozessor, der Javascript kann...

        ich kenne da sogar zwei :-) MSXML ab Version 3, und Xalan-Java.

        Das sind aber Prozessoreigene erweiterungen (wie <xalan:script lang="javascript">)  und damit begibt man sich in eine Abhängigkeit in doppelter hinsicht: die XSLs können dann nur von diesen Prozessoren verarbeitet werden und wenn in einer neueren Version sich was ändert, sinst man ggf. auch blöd da.
        Was nicht heisst, dass man es nicht tun kann, nur sollten die Nachteile auch klar sein.

        Grüße
        Thomas

        1. Hi Thomas,

          Das sind aber Prozessoreigene erweiterungen

          das ist klar. Wenn man erweiterte Funktionalität braucht, dann sollte man zuerst bei XSLT extensions schauen. Das ist zwar noch kein Standard, aber auf dem Weg dorthin.

          Um ehrlich zu sein, ich mache soviel mit XSL, dass ich hier in der Firma die Anlaufstelle für Fragen rund um XSL bin. Aber gebraucht habe ich das Script erst einmal, und ich weiß nicht mal mehr warum :-)

          Gruß,
          Martin

          1. Hallo,

            Um ehrlich zu sein, ich mache soviel mit XSL, dass ich hier in der Firma die Anlaufstelle für Fragen rund um XSL bin.

            Tja, dann geht es dir nicht anderes als mir, fast 90% meiner Arbeit macht XML/XSL-Entwicklung aus ;-)

            Grüße
            Thomas