1

物事の順序をチェックするかなり大きなテストがあり、 と等しいbaz属性を持つ要素を無視したいのですが、これは私が試したものですが、正しく機能していないようです。属性に関係なく無視しているようです:attriybaz

環境:

jd:foo|jd:bar|jd:baz[@attri != 'y']|jd:bam

テスト:

        (name()='foo' and 
          (preceding-sibling::*[local-name()='bar']
           or preceding-sibling::*[local-name()='baz' and @attri != 'y']
           or preceding-sibling::*[local-name()='bam']
          )
       ) or
       (name()='bar' and 
          (preceding-sibling::*[local-name()='baz' and @attri != 'y']
           or preceding-sibling::*[local-name()='bam']
          )
       ) or
       (name()='baz' and 
          (preceding-sibling::*[local-name()='bam']
          )
       )
4

1 に答える 1

2

コンテキストは、 equal tobazを含む要素だけでなく、属性を含まない要素も除外します。これ:@attriybaz

jd:baz[@attri != 'y']

は、属性がbaz 必要であり、@attri属性であってはならないことを示していますy。したがって、 のようなノードは属性を含まないため、コンテキストの一部にはなりませ<baz>...</baz>これには、 のようなコンテキスト要素が含まれます<baz attri='z'>

要素のみを除外したい場合<baz attri='y'>(ただし、その属性を持たない要素は除外したくない場合)、次を使用する必要があります。

baz[not(@attri = 'y')]

bazこれは、セットを持つすべての要素を選択し@attri='y'、そのセットを無効にします。これには、属性を持たない要素が含まれます。@attri

属性のない要素が考慮される場合、同じことがテストに適用されます。

于 2014-06-02T20:18:32.703 に答える