Zyrano: xpath ausdruck als parameter

Hallo, ich habe folgendes problem:

Ich habe in meinem xsl sheet folgenden Parameter angelegt:

  
<xsl:param name="param">/test1/test2/test"*</xsl:param>

Da dieser Parameter ein xpath ausdruck ist, möchte ich den natürlich auch auswerten, und zwar wie folgt:

  
<xsl:apply-templates select="$param"/>

Leider funktioniert das so nicht.
Wenn ich folgendes probiere funktioniert alles wie gewünscht:

  
<xsl:apply-templates select="/test1/test2/test"/>

habt ihr eine idee woran das liegen könnte?

Vielen Dank.

  1. <xsl:param name="param">/test1/test2/test"*</xsl:param>

    Hier gibst du nur den Inhalt des param an!

      
    <xsl:apply-templates select="/test1/test2/test"/>
    

    hier legst du den pfad an für den param!

    MfG
    Markus

    1. Edit sry,
      Hab falsch gelesen!

      Der 1 teil ist sowie ich gesagt habe. Es wird nicht gesagt wo er es findet.

      <xsl:apply-templates select="/test1/test2/test"/>
      Hier sagst du dem Templates in welchen knoten sie drinne sind udn wo er den Inhalt findet.

      MfG
      Markus

      1. Oh, ich seh gerade dass ich mich verschrieben habe. es muss nicht:
        <xsl:param name="param">/test1/test2/test"*</xsl:param>
        sondern
        <xsl:param name="param">/test1/test2/test</xsl:param>
        heissen.

        wie gesagt, komischerweise funktioniert folgender aufruf nicht:
        <xsl:apply-templates select="$param"/>

        IE gibt die Fehlermeldung:
        "Der Verweis auf Variable oder Parameter 'param' muss sich auf eine Knotenliste beziehen."

        folgender funktioniert aber:~~~xml

        <xsl:apply-templates select="/test1/test2/test"/>

        1. Hallo,

          Oh, ich seh gerade dass ich mich verschrieben habe.

          Das ist hier egal.

          wie gesagt, komischerweise funktioniert folgender aufruf nicht:
          <xsl:apply-templates select="$param"/>

          IE gibt die Fehlermeldung:
          "Der Verweis auf Variable oder Parameter 'param' muss sich auf eine Knotenliste beziehen."

          Sagt dsoch alles: du hast Text (string) im Param als Wert, erwartet wird bei aber <xsl:apply-templates select="$param"/> eine Knotenliste.

          Läßt sich nicht ändern.
          Ganz schlimm geht es so:

          param1 = test1
          param2 = test2
          param3 = test3

          <xsl:apply-templates select="node()[name() = $param1]/node()[name() = $param2] .... "/>

          Grüße
          Thomas

  2. Hi Zyrano!

    Ich bin nicht ganz sicher, was du vor hast, aber eventuell findest du in diesem Beispiel eine Lösung:
    http://de.selfhtml.org/xml/darstellung/xsltelemente.htm#with_param@title=xsl:with-param

    Grüße,
    Richard

  3. Hallo Zyrano,

    Du bräuchtest eine Funktion, die einen zur Laufzeit erzeugten Ausdruck auswertet. Sowas sehen XSLT und XPath nicht vor.
    Viele XSLT-Prozessoren haben aber zusätzliche Funktionen, vielleicht ist da ja schon was dabei, oder bieten einen Mechanismus an, eigene einzubauen. Mit einer brauchbaren API kann das sehr einfach sein, so eine Funktion zu schreiben. Diese muss ja lediglich den String und eine Knotenmenge als Parameter nehmen und die vorhandene XPath-Implementierung nutzen, um den Ausdruck auszuwerten.

    Grüße

    Daniel