XSLT过滤器节点列表,按另一个节点列表,然后循环



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

$filtered的节点必须在不修改的情况下进行复制。其余节点必须进行修改。

这两个变量都在起作用,它们都很好。

现在,我喜欢在$filter中未包含的$all的所有节点上使用for each循环。

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

我不能让这个工作。

我尝试了每个选择[….]

<xsl:for-each select="...">
$all != $filtered
$all/node() != $filtered/node()
$all[node() != $filtered/node()]
$all[not($filtered)]
... and some other

谁能告诉我失败的原因吗。

这肯定是可能的,但我想我就是看不到森林里的树木。

谢谢

如果您使用XSLT2.0,您应该能够执行…

<xsl:for-each select="$all except $filtered">

最新更新