1

这是我正在尝试做的一个例子。XML:

<TEST>
  <NODE>
    <A id="ELEMENT_1"/>
    <A id="ELEMENT_2"/>
    <A id="ELEMENT_3"/>
  </NODE>
  <SOME_OTHER_NODE>
    <B nodeId="ELEMENT_1" invalid="1"/>
  </SOME_OTHER_NODE>
</TEST>

XSL:

<xsl:apply-templates select="A[?? only select the A's where there is no B where A/@id = B/@nodeId and B/@invalid = 1 ??]"/>

这甚至可能吗?在实际的 xsl 中,我目前有这样的东西:

<xsl:apply-templates select="(ANSWER|GROUP)[position() mod 2 = 0]"/>

而且我想找到一种方法来限制基于 xml 中的不同元素选择的 ANSWER。希望我已经清楚地解释了这一点,如果我还没有,请告诉我。也许有更好的方法来做这样的事情。我愿意接受任何反馈或建议。谢谢。

4

1 回答 1

2

这个 XPath 表达式(节点集比较)NODE作为上下文:

A[not(@id = ../../SOME_OTHER_NODE/B[@invalid='1']/@nodeId)]

带钥匙:

<xsl:key name="kInvalidTest" match="B[@invalid=1]" use="@nodeId"/>
...
<xsl:appy-templates select="A[not(key('kInvalidTest',@id))]"/>  
于 2010-11-09T23:54:10.823 回答