【问题标题】:XSLT Filter List of nodes, by another list of nodes, and loop overXSLT Filter List of nodes, by another list of nodes, and loop over
【发布时间】:2019-06-14 21:59:59
【问题描述】:

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

$filtered 的节点必须在未经修改的情况下被复制。 其余节点必须修改。

两个变量都在工作,一切都很好。

现在我喜欢使用 for-each 循环遍历 $all 中未包含在 $filtered 中的所有节点。

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

我没有让这个工作。

我尝试了 for-each select[....]

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

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

谁能指出我的失败之处。

这一定是有可能的,但我想我就是只见树木不见森林。

谢谢

【问题讨论】:

    标签: xslt xslt-1.0 xslt-2.0


    【解决方案1】:

    如果您使用的是 XSLT 2.0,您应该能够...

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

    【讨论】:

      猜你喜欢
      • 2022-12-01
      • 2015-05-23
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2015-03-13
      • 2012-11-29
      • 2022-12-28
      • 1970-01-01
      相关资源
      最近更新 更多