XSLT筛选节点列表,再按另一个节点列表,然后遍历

时间:2019-01-21 13:37:27

标签: xslt xslt-1.0 xslt-2.0

我有一个变量$ all,其中包含节点列表(复杂节点,包括多级子节点)。 我还有第二个$ filtered变量,其中包含来自$ all的已过滤节点。

$ filtered的

个节点必须未经修改就被复制。 其余节点必须修改。

两个变量都起作用,并且一切正常。

现在,我想遍历$ filtered中未包含的$ all中所有节点的for-each。

当然,我可以用负样式重写$ filtered的filter-expresion,但是我不喜欢这样做,并且希望防止这种情况发生。 我不喜欢使用任何属性或元素来处理它,因为过滤器表达式可以更改,并且会生成一些条件。我必须按$ filtered的每个整个节点(包括所有子节点,属性和元素(如指纹))从$ all中过滤节点。

我不明白这一点。

我尝试了针对每个选择[....]

<xsl:for-each select="...">

    $all != $filtered
    $all/node() != $filtered/node()
    $all[node() != $filtered/node()]
    $all[not($filtered)]
    ... and some other

谁能指出我的失败。

那一定是有可能的,但我想我只是看不见森林。

谢谢

1 个答案:

答案 0 :(得分:2)

如果您使用的是XSLT 2.0,则应该可以...

 <xsl:for-each select="$all except $filtered">
相关问题