frankx: setParameter gibt String, nicht xpath

Hellihello,

mit

  
 <xsl:param name="rwasPARAM" select="/produktliste/produkt[id='ID2']" />  
   <xsl:value-of select="$rwasPARAM"></xsl:value-of>  
  

in der xsl gibts mir den Inhalt des Knotens "produktlist/produkt[id='ID2']" aus. Das klappt auch innerhalb von apply-templates. Alles gut soweit.

Wenn ich aber mit PHP

  
$parameter="/produktliste/produkt[id='ID3']";  
$proc->setParameter("","rwasPARAM",$parameter);  

spuckt mir o.g. value-of den String "/produktliste/produkt[id='ID3']" statt den erwarteten Inhalt des entsprechenden Knotens aus.

Weiß jemand warum bzw. wie die Paramterübergabe korrekt gemacht wird?

Dank,

frankx

  1. Hallo,

    Wenn ich aber mit PHP

    $parameter="/produktliste/produkt[id='ID3']";
    $proc->setParameter("","rwasPARAM",$parameter);

    
    >   
    > spuckt mir o.g. value-of den String "/produktliste/produkt[id='ID3']" statt den erwarteten Inhalt des entsprechenden Knotens aus.  
      
    Du willst einen XPath-Audruck übergeben. PHP hat aber \_so\_ überhaupt keine Ahnung von XPath.  
      
    
    > Weiß jemand warum bzw. wie die Paramterübergabe korrekt gemacht wird?  
      
    Du muss dich mit <http://at2.php.net/manual/en/function.xpath-eval.php> etc. beschäftigen.  
      
    Grüße  
    Thomas
    
    1. Hellihello Thomas,

      hab ich jetzt was falsch verstanden. Nicht PHP sollte Ahnung haben von xpath sondern "lediglich" den entsprechenden Wert dem XSL übergeben. So gesehen "missversteht" ja XSL den Xpath als XSL.

      Dank,

      frankx

      1. Hallo,

        hab ich jetzt was falsch verstanden. Nicht PHP sollte Ahnung haben von xpath sondern "lediglich" den entsprechenden Wert dem XSL übergeben. So gesehen "missversteht" ja XSL den Xpath als XSL.

        Es wird aber im select-Attribut kein Knotenset ausgewertet, sondern eben der uebergebene "string", d. h. der XPath-Ausdruck steht in Anfuehrungszeichen und ist somit keiner mehr.

        Probiere es mit der Uebergabe eines Teilparameters, der dann im Praedikat [...] entsprechend verglichen wird, also im genannten Beispiel koennte das die ID sein.

        MfG, Thomas

      2. Hallo,

        hab ich jetzt was falsch verstanden.

        Ja.

        Nicht PHP sollte Ahnung haben von xpath sondern "lediglich" den entsprechenden Wert dem XSL übergeben.

        Ja, aber in diesem "lediglich" ist eben ein XPath ausdruck enthalten. Du willst dass dir PHP den Inhalt vom "/produktliste/produkt[id='ID2']" ausgibt. Das ist ein XPath-Ausdruck den du lediglich als String übergibst. Aslo bekommst du einen String zurück.

        Da der Inhalt vom "/produktliste/produkt[id='ID2']" eigentlich ID2 ist, kannst du wie Thomas vorschlug ein $parameter="ID3" verwenden und das in deinem XSL-Abfragen (z.B. <xsl:apply-templates select="/produktliste/produkt[id= $rwasPARAM]" /> etc.).

        Grüße
        Thomas