Могу ли я передать массив из php в xslt содержит?
Я использую следующую переменную в php для обработки идентификатора клиента:
$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:
$k='160177,160176,160184,160178,160179....etc'
И получите мой XSLT содержит оператор для проверки с КАЖДЫМ идентификатором клиента.
В PHP я бы изменил свой $k на массив и перебрал его, но XSLT не имеет понятия о массиве. Как я могу получить XSLT-содержимое для проверки с КАЖДЫМ идентификатором клиента?
Майн, спасибо за любую помощь!
1 ответ
Единственное, что нужно сделать, это изменить порядок вызова функции "td:Globale_Pauschale[contains($k,td:CreatedBy)]"
, Чем вы можете иметь список идентификаторов в переменной k ($k='160177,160176,160184,160178,160179'
).
Но это будет работать надежно, только если идентификаторы всегда имеют одинаковую длину. (Это не будет работать, если у вас есть также более короткие идентификаторы, такие как 16
).
Чтобы сделать это для идентификаторов различной длины, используйте следующую команду:
select="td:Globale_Pauschale[contains($k,
concat(',', normalize-space(td:CreatedBy), ','))]"
и поставьте запятую в начале и конце переменной k.$k=',160177,160176,160184,160178,160179,16,'