Любая идея, как добиться желаемого результата с помощью XSLT?XSLT: объединить узлы на основе заданного списка
Источник XML:
<results>
<pageFunctionResult>
<id>46555</id>
<name>URC 90 S</name>
<quantity>5+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<id>46556</id>
<name>URC 90 M</name>
<quantity>5+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<id>46557</id>
<name>URC 90 L</name>
<quantity>10+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<id>96555</id>
<name>NICE</name>
<quantity>5+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<id>26555</id>
<name>NEW L</name>
<quantity>5+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<id>26552</id>
<name>NEW XXL</name>
<quantity>5+</quantity>
</pageFunctionResult>
</results>
мне нужно каким-то образом объединить эти элементы на основе, которые находятся в данном списке (это может быть xsl:variable
), например: "URC 90", "NEW"
.
Позвольте мне показать вам пример вывода, как это должно выглядеть:
<results>
<pageFunctionResult>
<name>URC 90</name>
<variantname>URC 90 S</variantname>
<id>46555</id>
<quantity>5+</quantity>
<variant id="1">
<id>46556</id>
<name>URC 90 M</name>
<quantity>5+</quantity>
</variant>
<variant id="2">
<id>46557</id>
<name>URC 90 L</name>
<quantity>10+</quantity>
</variant>
</pageFunctionResult>
<pageFunctionResult>
<id>96555</id>
<name>NICE</name>
<quantity>5+</quantity>
</pageFunctionResult>
<pageFunctionResult>
<name>NEW</name>
<variantname>NEW L</variantname>
<id>46555</id>
<quantity>5+</quantity>
<variant id="1">
<id>26552</id>
<name>NEW XXL</name>
<quantity>5+</quantity>
</variant>
</pageFunctionResult>
</results>
В исходном XML мы имеем элемент, который не является в данном списке: NICE
. Эти узлы должны быть скопированы как есть (не нужно изменять).
Как вы думаете, ребята, этот выход можно достичь, если мы знаем часть элемента <name>
?
Вы используете XSLT 2.0? –
Да, версия XSLT не имеет значения. Я использую процессор SAXON. – Adrian