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

?の最初の引数として''代わりに使用してみてください。nullsetParameter()

于 2013-03-11T09:56:39.043 に答える