0

尝试使用 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>
4

2 回答 2

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

于 2013-03-11T10:58:11.567 回答
0

尝试使用''而不是null作为setParameter()?

于 2013-03-11T09:56:39.043 回答