Lars: Übergabeprameter mit XSL auslesen?

Hallo Fachleute! :-)

Ich habe da ein "kleines" Problem mit Übergabeparametern beim Aufruf. Ich möchte gerne in einem XSL Dokument die Übergabeparameter der URL beim Aufruf der Seite in xsl Variablen speichern.

Die Url (z.B. "www.test.de?1?3") enthält jeweils zwei Zahlenwerte (hier 1 und 3) die jeweils in eine XSL Variable gespeichert werden sollen. Mit JavaScript lassen sich die Parameter auch wunderschön auslesen und in einer Variablen speichern. Aber von JavaScript lässt sich das Ganze wiederum nicht in der XSL Variablen speichern.

Gibt es einen direkten Weg, Übergabewerte (wie die obigen) in XSL Variablen zu speichern?

*hilfe* ;-)

  1. Hi,

    Die Url (z.B. "www.test.de?1?3")

    Hm. Jetzt mal abgesehen vom fehlenden http://, ich vermute (bin aber zu faul, das jetzt rauszusuchen), daß das zweite ? kein Parameter-Trenner ist - ich würde das als einen Parameter mit Namen 1?3 und ohne Wert interpretieren - vermutlich müßte aber das ? zwischen den Ziffern sogar url-encoded sein.

    Auf URL-Parameter kann man im XSL normalerweise mit xsl:param-Elementen zugreifen (bei browserseitiger XSL-Transformation funktioniert das aber nicht wirklich).
    Das setzt aber voraus, daß die Namen der Parameter existent und bekannt sind.

    nicht

    enthält jeweils zwei Zahlenwerte (hier 1 und 3)

    Du scheinst aber hier nur Werte benutzen zu wollen, ohne ihnen Namen zu geben. Das kann m.E. nicht funktionieren.

    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. Hallo Andreas! :-)

      Danke für deine Hinweise.

      ich vermute (bin aber zu faul, das jetzt rauszusuchen), daß das zweite ? kein Parameter-Trenner ist

      Da liegt leider nicht das Problem. Ich weiß, dass man normalerweise die Parameter mit Name und Wert, beginnend mit "?" und getrennt durch ein "&" bezeichnet. Bei meiner Webrecherche und Tests hatte sich aber herausgestellt, dass es auch so funktioniert. Die abgespeckte Schreibweise ist also beim Testen herausgekommen. ;-)

      Mit folgendem Javascript lassen sich diese Parameter der URL (.../navigation.xml?2?0) auch wunderbar auslesen:

      <script language="JavaScript" type="text/javascript">
       variable = self.location.href.split("?");
       lev1 = variable[1];
       lev2 = variable[2];
       document.write(lev1);
       document.write(lev2);
       </script>

      Aber eben leider auch nur mit dem Javascript. Die Ausgabe der Variablen lev1 und lev2 am Screen zeigt die richtigen Parameterwerte an.

      Nun aber bleibt das Problem, dass man die Werte der Javascript Variablen lev1 undd lev2 nicht an eine XSL Variable übergeben oder zuweisen kann. :-(

      <xsl:variable name="level1id" select="2" />
       <xsl:variable name="level2id" select="2" />

      Da wo der Wert 2 jeweils bei select zugewiesen wird, soll nach Möglichkeit immer der Wert des Übergabeparameters zugewiesen werden. Aber es gibt scheinbar keinen direkten Weg von Javascript Variableninhalt an XSL Variablen zuzuweisen!?

      Daher meine Frage, ob man Übergabeparameter der URL auch direkt mit XSL auslesen und der entsprechenden XSL Variablen zuweisen kann. Oder gibt es eventuell doch einen Weg Werte von Javascript Variablen an XSL Variablen zu übergeben?

      Danke.

      Lars :-)

      1. Hi,

        Da liegt leider nicht das Problem. Ich weiß, dass man normalerweise die Parameter mit Name und Wert, beginnend mit "?" und getrennt durch ein "&" bezeichnet. Bei meiner Webrecherche und Tests hatte sich aber herausgestellt, dass es auch so funktioniert. Die abgespeckte Schreibweise ist also beim Testen herausgekommen. ;-)

        Tests mit XSL?

        Mit folgendem Javascript lassen sich diese Parameter der URL (.../navigation.xml?2?0) auch wunderbar auslesen:

        Nur weil es vielleicht bei Javascript funktioniert, heißt noch lange nicht, daß es auch bei XSL funktioniert.

        Aber eben leider auch nur mit dem Javascript.

        Eben.

        Nun aber bleibt das Problem, dass man die Werte der Javascript Variablen lev1 undd lev2 nicht an eine XSL Variable übergeben oder zuweisen kann. :-(
        <xsl:variable name="level1id" select="2" />
        <xsl:variable name="level2id" select="2" />

        Wie bereits gesagt, für URL-Parameter ist das xsl:param-Element zuständig. Und das erfordert name-value-Pärchen in der URL.

        Daher meine Frage, ob man Übergabeparameter der URL auch direkt mit XSL auslesen und der entsprechenden XSL Variablen zuweisen kann.

        s.o.

        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 nochmals, Andreas! :-)

          Wie bereits gesagt, für URL-Parameter ist das xsl:param-Element zuständig. Und das erfordert name-value-Pärchen in der URL.

          Okay, danke für den Tipp! Ich werde die Strukturierung bereinigen und es nochmal damit versuchen. :-)

      2. Hallo,

        Mit folgendem Javascript lassen sich diese Parameter der URL (.../navigation.xml?2?0) auch wunderbar auslesen:

        <script language="JavaScript" type="text/javascript">
        variable = self.location.href.split("?");
        lev1 = variable[1];
        lev2 = variable[2];
        document.write(lev1);
        document.write(lev2);
        </script>

        Aber eben leider auch nur mit dem Javascript. Die Ausgabe der Variablen lev1 und lev2 am Screen zeigt die richtigen Parameterwerte an.

        Du muss uns bitte _schon_ sagen, was du genau möchtest. D.h. zuerst und vor allem ob du deine XML/XSL-Tranformation dem Browser überläßt oder serverseitig erledigst.

        Daher meine Frage, ob man Übergabeparameter der URL auch direkt mit XSL auslesen und der entsprechenden XSL Variablen zuweisen kann. Oder gibt es eventuell doch einen Weg Werte von Javascript Variablen an XSL Variablen zu übergeben?

        Macht du deine XML/XSL-Tranformation serverseitig oder soll dies der Browser erledigen?

        Beides ist möglich und bei beidem hast du die Möglichkeiten zu Paramterabfrage.

        Was du aber nicht kannst ist aus dem Tramsformationsprozess heraus zurück in den XSLT schreiben (und das versucht du hier).

        Konrekt kann man dir nur dann wirklich weiterhelfen, wenn du diese Frage (serverseitig <-> im Browser) beantwortet hast.

        Grüße
        Thomas

  2. Hallo Thomas & Andreas,

    ich habe es hinbekommen. Danke für die Denkanstöße. Die waren sehr hilfreich.

    Grüße
    Lars