Dodger: Einfügen von Javascript

Hallo,

Ich möchte in eine XSL Datei ein JavaScript einbauen.
Das habe ich auch wunderbar geschafft. Wenn ich nun aber versuche in den JavaScript abschnitt einen xsl tag einzufügen, also im prinzip die Variablen im JavaScript-Part zu definieren, sagt mir IE 5.0 zwei varianten:
wenn ich es so versuche:
<script language= "JavaScript">
function test()
{
var a = <xsl:value-of select="xXML_Name">;
}
</script>
sagt er mir Syntaxfehler.

Und wenn ichs so versuche:
<xsl:script language="JavaScript">
function test()
{
var a = <xsl:value-of select="xXML_Name">;
}
</xsl:script>
sagt er mir das  xsl:script hier nicht erlaubt ist!

Wäre echt genial wenn mir jemand helfen könnte, denn dann wäre mein Programm so gut wie fertig.

Vielen Dank im Vorraus

Dodger

  1. Hallo,

    Ich möchte in eine XSL Datei ein JavaScript einbauen.

    wenn ich es so versuche:
    <script language= "JavaScript">
    function test()
    {
    var a = <xsl:value-of select="xXML_Name">;
    }
    </script>
    sagt er mir Syntaxfehler.

    wenn, dann heißt es <xsl:value-of select="xXML_Name"/> (Leeres Tag!) und der Script-Code gehört in eine CDATA-Section
    <![CDATA[ .... ]]>

    Aber sinnvoll ist das Ganze - soweit ich sehe nicht. Das Stylesheet wird ja vor dem JS-Code ausgeführt, wie willst du also die Variable verwenden. Naja, egal.

    Und wenn ichs so versuche:
    <xsl:script language="JavaScript">
    function test()
    {
    var a = <xsl:value-of select="xXML_Name">;
    }
    </xsl:script>
    sagt er mir das  xsl:script hier nicht erlaubt ist!

    xsl:script gabs mal als proprietäre Erweiterung im alten msxml-Parser des IE. Im neuen standardkonformen ist es nicht mehr erlaubt.
    In XSLT 1.1 ist es allerdings geplant, um Scripte einzubinden.

    Gruß
    Franz

    1. Mit CData hab ich natürlich auch schon gearbeitet. Das Problem ist das er anstatt das Script zu generieren, ganz einfach das ganze innerhalb des CData Tags als Text ausgibt. :(

      so sieht mein Code aus:
        <input type="submit" onClick="onTest()"></input>
                 <![CDATA[
                 <script language="JavaScript">
                 function onTest(){
            var a;
            var b;
            var maxl;
            var name;
            c= document.XSL.int_10.value;

      b=]]><xsl:value-of select="Vars/Test"/><![CDATA[;
            name = "blabla";
            alert("huhu "+a);
            alert("huhu "+b);
            alert("huhu "+name);
            if (c<=a&&c>=b)
             {
              alert("Eierkopp");
             }
          </script>
        }]]>

      Ausgegeben wir der Button Submit und danach der inhalt aus CData.
      Hast du noch nen Tipp woran das liegen könnte ?

      Danke im Voraus

      Dodger

      1. Hallo Dodger,

        Ausgegeben wir der Button Submit und danach der inhalt aus CData.
        Hast du noch nen Tipp woran das liegen könnte ?

        Ja, nur den Code innerhalb des Script-Tags darfst du in einen CDATA-Abschnitt setzen, nicht das Tag selbst, denn dieses soll ja noch als Markup behandelt werden und nicht als Zeichendaten!

        also:

        <script>
        <![CDATA[
          ... JS-Code....
        ]]>
        </script>

        Gruß
        Franz

        1. Hi,
          auf der Webseite meiner Schwester läuft derzeit einer geistigen Amok. Die IP-Adresse müßte ja rauszubekommen sein, die wird ja vom Anbieter des Gästebuches mitprotokolliert.
          Dazu habe ich zwei Fragen:
          1. Wie gut sind die Chancen gegen diesen Spinner vorzugehen. Was er abgelassen hat sind teilweise handfeste Beleidigungen.
          2. Wie kommt man von der IP zum Provider?
          Tschüß
          Carl

          1. Ich hab im code vorher die Markierungen vergessen. Die Kommentare entsprechen den Markierungen.
            Übrigen funktioniert alles Einwandfrei wenn ich die while schleife und die If abfrage herausnehmen.

            Danke nochmals

            MfG

            Dodger

            <script language="JavaScript">
            <![CDATA[
            function onTest1(){
              var maxVal;
              var minVal;
              var name;
              var varValue;
              var helpStr;
              var maxLength;
              var a=0;
              while (a < 1)//Erster fehler kommt hier( ")" fehlt)
              {]]>
              <xsl:for-each select="Vars/Var">
                 <xsl:if match=".[xtype='Integer']">

            <![CDATA[
                  minVal=]]><xsl:value-of select="xMinval"/><![CDATA[;
                  maxVal=]]><xsl:value-of select="xMaxval"/><![CDATA[;
                  value=document.XSL.]]><xsl:value-of select="xName"/><![CDATA[.value;
                  if (!((varValue <= maxVal) && (varValue >= minVal)))//Zweiter kommt hier(selber Fehler wie erster)
                  {
                            alert("]]>

            <xsl:value-of select="Vars/ErrA"/>
                     <xsl:value-of select="xHelpStr"/>

            <![CDATA[\n]]>

            <xsl:value-of select="Vars/ErrE"/>

            <![CDATA[\n]]>

            <xsl:value-of select="Vars/ErrMinI"/>
                     <xsl:value-of select="xMinval"/>
                     <xsl:value-of select="Vars/ErrMaxI"/>
                     <xsl:value-of select="xMaxval"/>

            <![CDATA[");
                         break;
                     }
                 ]]>

            </xsl:if>
              </xsl:for-each>
              <![CDATA[
              a=1;
              }

            }]]>
              </script>