2013-03-11 113 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

相关问题