xslt:做否定选择的最简单方法是什么?

时间:2018-12-12 09:29:19

标签: xslt xpath saxon xslt-3.0 xpath-3.0

基本上我想要的是这样的东西,它找到无法查找ID(“链接断开”)的所有节点:

<xsl:variable name="failedIDLookups" select="//inventory/box[@boxtypeID != //boxtypes/@ID]"/>

但是这不能按预期方式工作-我认为语法是错误的,正确的方法应该是什么?

1 个答案:

答案 0 :(得分:4)

我怀疑您想要

<xsl:variable name="failedIDLookups" select="//inventory/box[not(@boxtypeID = //boxtypes/@ID)]"/>

然后可以使用键声明(作为xsl:stylesheet的子代)进行优化

<xsl:key name="boxtypes-ref" match="boxtypes" use="@ID"/>

<xsl:variable name="failedIDLookups" select="//inventory/box[not(key('boxtypes-ref', @boxtypeID))]"/>