我可以将数组从php传递到xslt吗?

我可以将数组从php传递到xslt吗?,php,arrays,xslt,Php,Arrays,Xslt,我在php中使用以下变量来处理客户id: $k='160177' 我使用以下方法将其传递给xslt: ... $xsl = $proc->importStylesheet($xsl); $xsl = $proc->setParameter('', 'k', $k); $newdom = $proc->transformToDoc($inputdom); print $newdom->saveXML(); 我在XSLT中提取变量并使用它检查节点: ... <xsl

我在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]">
并让我的XSLT contains语句对照每个客户id进行检查

在PHP中,我会将$k更改为数组并对其进行迭代,但XSLT没有数组的概念。如何让XSLT包含检查每个客户id


谢谢你的帮助

唯一要做的是将contain函数调用的顺序更改为“td:Globale\u Pauschale[contains($k,td:CreatedBy)]”。然后您可以在变量k中拥有一个ID列表(
$k='160177160176160184160178160179'

但是,只有当ID的长度始终相同时,这种方法才能可靠地工作。(如果您还有较短的ID,如
16
,则此操作将不起作用)

要使此操作适用于不同长度的ID,请使用以下选项:

select="td:Globale_Pauschale[contains($k, 
            concat(',', normalize-space(td:CreatedBy), ','))]"
并在变量k的前面和末尾加一个逗号。

$k=',160177160176160184160178160179,16',

唯一要做的就是将contain函数调用的顺序更改为“td:Globale\u Pauschale[contains($k,td:CreatedBy)]”。然后您可以在变量k中拥有一个ID列表(
$k='160177160176160184160178160179'

但是,只有当ID的长度始终相同时,这种方法才能可靠地工作。(如果您还有较短的ID,如
16
,则此操作将不起作用)

要使此操作适用于不同长度的ID,请使用以下选项:

select="td:Globale_Pauschale[contains($k, 
            concat(',', normalize-space(td:CreatedBy), ','))]"
并在变量k的前面和末尾加一个逗号。

$k=',160177160176160184160178160179,16',

请给我们一个td:CreatedBy的内容示例。这是单个id吗?td:CreatedBy是存储在xml文件中的单个id。例如:160177请给我们一个td:CreatedBy的内容示例。这是单个id吗?td:CreatedBy是存储在xml文件中的单个id。例如:160177回答得很好。谢谢真是一种享受@理查德丁克勒:很高兴我能帮上忙。请考虑将答案标记为已接受。如果你不知道怎么做,看看。很好的答案。谢谢真是一种享受@理查德丁克勒:很高兴我能帮上忙。请考虑将答案标记为已接受。如果你不知道怎么做,去看看。