代码之家  ›  专栏  ›  技术社区  ›  darune

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

  •  3
  • darune  · 技术社区  · 7 年前

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

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

    但这并不像预期的那样有效——我想语法是错误的,正确的方法应该是什么?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Martin Honnen    7 年前

    我猜你想要

    <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))]"/>
    
    推荐文章