C-One: Parameterübergabe an xsl

Beitrag lesen

Hallo,

danke erstmal für deine Antwort.

Hallo,

<?php IncludeXml("../../data.xml","detail.xslt"); ?>

Diese Funktion gehört nicht zum Standardumfang von PHP und ist vermutlich von Dir geschrieben, daher müsstest Du uns schon den Sourcecode dieser Funktion zeigen...

// ------------------------------------------------------------
    // Function for including an XL data source (lika an RSS feed)
    // rendered with a specified XSLT file.
    // ------------------------------------------------------------
    function IncludeXml($xml_url, $xslt_file)
    {
      // Get RSS Content
      $handle = fopen($xml_url, "r");
      $content = "";
      $content .= fread($handle, 8192);

while (!feof($handle)) {
        $content .= fread($handle, 8192);
      }
      fclose($handle);
      if( !$domXmlObj = domxml_open_mem($content) ) {
        die( "Cannot parse the rss feed." );
      }

// Transform
      $domXsltObj = domxml_xslt_stylesheet_file( $xslt_file );
      $domTranObj = $domXsltObj->process( $domXmlObj );
      echo $domXsltObj->result_dump_mem( $domTranObj );
    }

In der xslt-Datei ändere ich die Parameter immer noch manuell:
<xsl:variable name="id">07</xsl:variable>
<xsl:variable name="year">2007</xsl:variable>

In die XSL-Datei gehört - wenn Du Parameter verwenden willst - sowas wie:

<xsl:param name="id" />

<xsl:param name="year" />


>   
> Und wenn Du in PHP die XSL-Datei aufrufst, dann wirst Du ja in Deiner PHP-Funktion irgendwas machen wie:  
>   
> ~~~php

$doc = new DOMDocument ();  

> $xslt = new XSLTProcessor ();  
>   
> $doc->load ($xslt_filename);  
> $xslt->importStyleSheet ($doc);  
>   
> $doc->load ($xml_filename);  
> $html_code = $xslt->transformToXML ($doc);

In dem Fall kannst Du einfach VOR dem transformToXML-Aufruf ein:

$xslt->setParameter ('', 'year', $year);

$xslt->setParameter ('', 'id', $id);


>   
> Das sorgt dann dafür, dass die Parameter im XSLT verfügbar sind.  
>   
> Die Doku zu den XSLT-Funktionen findest Du [auf der PHP-Seite](http://www.php.net/manual/en/ref.xsl.php).  
  
Der bringt mich irgendwie noch nicht so recht weiter.  
  

>   
> Viele Grüße,  
> Christian  
>