xslt:进行否定选择的最简单方法是啥?
Posted
技术标签:
【中文标题】xslt:进行否定选择的最简单方法是啥?【英文标题】:xslt: whats the easiest way to do a negated selection?xslt:进行否定选择的最简单方法是什么? 【发布时间】:2019-05-13 08:57:06 【问题描述】:基本上我想要的是这样的东西,它可以找到所有无法查找 ID 的节点(“断开的链接”):
<xsl:variable name="failedIDLookups" select="//inventory/box[@boxtypeID != //boxtypes/@ID]"/>
但这并没有按预期工作 - 我想语法是错误的,正确的做法应该是什么?
【问题讨论】:
您所说的“身份证损坏”是什么意思? @Andersson 错过了查找 你能分享你输入数据的sn-p吗?它会让你清楚地知道你到底想做什么。xsl:key
是@Martin 回答的最佳选择和更快的执行速度
另见***.com/questions/10534882/…
【参考方案1】:
我怀疑你想要
<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))]"/>
【讨论】:
以上是关于xslt:进行否定选择的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章