Существует ли способ скопировать 2 или 3 узла XML в переменную с помощью XSLT? Я ищу узлы, а не значения узлов.
Мой пример XML:
<node1>
<node2>
<node3>abc</node3>
<node4>def</node4>
</node2>
</node1>
<node1>
<node2>
<node3>123</node3>
<node4>456</node4>
</node2>
</node1>
И мой образец XSLT:
<xsl:for-each select="/node1/node2">
<xsl:if test="current()/node4 ! = '456'">
<xsl:copy-of select="./node3" />
<xsl:copy-of select="./node4" />
</xsl:if>
</xsl:foreach>
Проблема в том, что я получаю node4
каждый раз как первый узел XML вместо текущего. On node3
i’M get the current one and there’s no problem.
Ваша проблема может быть вызвана проблемой RTF (результирующий фрагмент дерева) XSLT-1.0:
Я объяснил эту проблему в этом так ответить .
RTFs не могут быть запрошены выражениями XPath-1.0, поэтому они полезны только в очень ограниченном подмножестве ситуаций.
Одним из решений было бы использование более нового XSLT-2.0 .
Это может помочь вам просто выбрать узлы, которые вы хотите все сразу.