查找具有特定名称且没有特定属性的previous-sibling

时间:2014-06-02 19:37:21

标签: xslt xpath schematron

我有一个非常大的测试检查事物的顺序,我想忽略属性baz等于attri的{​​{1}}元素,这就是我所知道的尝试过,但它似乎没有正常工作。无论属性如何,似乎都忽略了y

上下文:

baz

测试:

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

1 个答案:

答案 0 :(得分:2)

您的上下文不仅排除了包含baz等于@attri的{​​{1}}个元素,还排除了包含 no 属性的y个元素。这样:

baz

表示jd:baz[@attri != 'y'] 必须具有baz属性,且不得为@attri。因此,y等节点将成为上下文的一部分,因为它不包含该属性。这将包括上下文元素,如<baz>...</baz>

如果您只想排除<baz attri='z'>元素(但不包括那些没有该属性的元素),则必须使用:

<baz attri='y'>

选择具有baz[not(@attri = 'y')] 的所有baz个元素并取消该集合。此包含没有@attri='y'属性的元素。

如果要考虑没有属性的元素,这同样适用于您的测试。