1

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 には配列の概念がありません。各顧客 ID に対してチェックする XSLT を取得するにはどうすればよいですか?

助けてくれてありがとう!

4

1 に答える 1

1

行うべき唯一のことは、contain 関数呼び出しの順序を に変更すること "td:Globale_Pauschale[contains($k,td:CreatedBy)]"です。変数 k ( $k='160177,160176,160184,160178,160179') に ID のリストを含めることができます。

ただし、これは、ID の長さが常に同じである場合にのみ、確実に機能します。( のような短い ID もある場合、これは機能しません16)。

長さが異なる ID に対してこれを機能させるには、次の選択を使用します。

select="td:Globale_Pauschale[contains($k, 
            concat(',', normalize-space(td:CreatedBy), ','))]"

変数 k の前後にコンマを入れます。
$k=',160177,160176,160184,160178,160179,16,'

于 2013-05-27T16:50:58.190 に答える