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
>