根据附加约束查找XPath 1.0中的最大属性

时间:2017-08-08 12:12:30

标签: xml vba xpath

我认为问题很清楚,但这是一个例子:

<?xml version="1.0"?>
<Root>
    <Criterion>
        <Name>A</Name>
        <Value>1</Value>
    </Criterion>
    <Criterion>
        <Name>C</Name>
        <Value>3</Value>
    </Criterion>
    <Criterion>
        <Name>D</Name>
        <Value>4</Value>
    </Criterion>
    <Criterion>
        <Name>B</Name>
        <Value>2</Value>
    </Criterion>
</Root>

我对此非常陌生,但从其他答案中我知道如何找到具有最大价值的标准:

//Root/Criterion[not(../Criterion/Value > Value)]

哪个给了我

<Criterion>
    <Name>D</Name>
    <Value>4</Value>
</Criterion>

正如所料。但我希望能够添加一个额外的约束,例如&#34;找到具有最大值且小于3&#34;的Criterion。对于这个例子,我希望它返回

<Criterion>
    <Name>B</Name>
    <Value>2</Value>
</Criterion>

因为它包含的最高值不高于3.我尝试了一些似乎可以工作的想法,但没有一个有;我希望我能用一个或两个命令来做。有人知道这样做的简单方法吗?不幸的是,我使用的是VBA,因此我只能使用XPath 1.0,并且根据示例,元素不一定按任何特定顺序排序。

1 个答案:

答案 0 :(得分:0)

只需在谓词中添加另一个条件

//Root/Criterion[Value <= 3 and not(../Criterion/Value > Value)]