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

NODEコンテキストとしてのこの XPath 式 (ノード セットの比較) :

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 に答える