2013-03-11 47 views
0

當我嘗試使用php xslt處理器將參數傳遞給我的樣式表時,我得到空的結果。任何想法將不勝感激!如何使用xslt處理器將參數傳遞給xsl?

PHP:

<?php 
$xsl = new DomDocument(); 
$xsl->load("style_listgastro.xsl"); 
$inputdom = new DomDocument(); 
$inputdom->load("XXX"); 
$proc = new XsltProcessor(); 
$xsl = $proc->importStylesheet($xsl); 
$xsl = $proc->setParameter(null, 'k', $_GET['k']); 
$newdom = $proc->transformToDoc($inputdom); 
print $newdom->saveXML(); 
?> 

XSLT:

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  xmlns:td="urn:schemas-XXX:Relationen"> 
<xsl:param name="k" /> 
<xsl:template match="/td:Relationen"> 
... 
<xsl:apply-templates select="td:Benutzer_zu_Gastro"> 
<xsl:sort select="td:Gastroname"></xsl:sort> 
</xsl:apply-templates> 
... 
</xsl:template> 
<xsl:template match="td:Benutzer_zu_Gastro"> 
<xsl:if test="td:Kategorien = '{$k}'"> 
<li><a> 
<xsl:attribute name="href">XXX</xsl:value-of> 
</xsl:attribute> 
<xsl:value-of select="td:Gastroname"></xsl:value-of> 
</a></li> 
</xsl:if> 
</xsl:template> 
</xsl:stylesheet> 

回答

0

嘗試使用'',而不是nullsetParameter()第一個參數?

2

這條線是不正確的:

<xsl:if test="td:Kategorien = '{$k}'"> 

它不是比較td:Kategorien反對$k價值,但對字符串值{$k}(和我猜td:Kategorien永遠不會有值{$k})。相反,只要使用此:

<xsl:if test="td:Kategorien = $k"> 


或者,更好的解決將是該行apply-templates改變這一點:

<xsl:apply-templates select="td:Benutzer_zu_Gastro[td:Kategorien = $k]"> 

,並完全消除xsl:if

+0

完美。謝謝! – 2013-03-11 12:05:01

相關問題