我在php中使用以下变量来处理客户ID:
$k='160177'
我使用:
传递给我的xslt...
$xsl = $proc->importStylesheet($xsl);
$xsl = $proc->setParameter('', 'k', $k);
$newdom = $proc->transformToDoc($inputdom);
print $newdom->saveXML();
我在XSLT中获取变量并使用它来检查节点:
...
<xsl:apply-templates select="td:Globale_Pauschale[contains(td:CreatedBy, $k]">
这很好但是现在我需要通过我的php变量传递多个客户ID:
$k='160177,160176,160184,160178,160179....etc'
获取我的XSLT包含语句以检查每个客户ID。
在PHP中,我会将$ k更改为数组并迭代它,但XSLT没有数组的概念。如何获取XSLT包含以检查每个客户ID?
Mayn感谢您的帮助!!
答案 0 :(得分:1)
唯一要做的就是将contains函数调用的顺序更改为"td:Globale_Pauschale[contains($k,td:CreatedBy)]"
。你可以在变量k($k='160177,160176,160184,160178,160179'
)中得到一个id列表。
但是如果id总是具有相同的长度,这只会起作用。 (如果你还有像16
这样的较短的ID,这将不起作用。
要对不同长度的ID进行此操作,请使用以下选择:
select="td:Globale_Pauschale[contains($k,
concat(',', normalize-space(td:CreatedBy), ','))]"
并在变量k的前端加一个逗号。
$k=',160177,160176,160184,160178,160179,16,'