XPath 比较两个元素的两个不同属性

use*_*902 5 xml xpath

假设我有这个 XML:

<x>
<e s="1" t="A"/>
<e s="2" t="A"/>
<e s="1" t="B"/>
</x>
Run Code Online (Sandbox Code Playgroud)

有没有办法编写一个xpath来查找是否有两个名为“e”的不同节点对@s具有相同的值但@t的值不同。第一部分很简单:

//e[@s = //e/@s] 
Run Code Online (Sandbox Code Playgroud)

和第二部分一样:

//e[@t != //e[@t]]
Run Code Online (Sandbox Code Playgroud)

但是我没有看到任何方法来构建一个 xpath 来比较两个单独元素“e”的两个不同属性。xpath 语法中有没有办法,还是没有希望?

Dim*_*hev 3

无法通过单个 XPath 1.0 表达式来选择所请求的节点

如果宿主语言是 XSLT 1.0,则current()可以构造使用该函数的表达式,以选择所需的节点。

使用以下 XPath 2.0 表达式:

for $x
           in
             /*/e[@s
                 = (preceding-sibling::e
                   |
                    following-sibling::e
                    )
                     /@s
                ],

           $y in /*/e[@s = $x/@s]

         return
            $x[not(@t = $y/@t)]
Run Code Online (Sandbox Code Playgroud)