尝试使用php xslt处理器将参数传递给我的样式表时,我得到一个空结果。任何想法将不胜感激!
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 :(得分:2)
此行不正确:
<xsl:if test="td:Kategorien = '{$k}'">
它不会将td:Kategorien
与$k
的值进行比较,而是将其与字符串值{$k}
进行比较(我猜测td:Kategorien
将永远不会有值{{} 1}})。相反,只需使用它:
{$k}
或者,更好的解决方法是将<xsl:if test="td:Kategorien = $k">
行更改为:
apply-templates
并完全删除<xsl:apply-templates select="td:Benutzer_zu_Gastro[td:Kategorien = $k]">
。
答案 1 :(得分:0)
尝试使用''
代替null
作为setParameter()
的第一个参数?