在XPath中选择两种不同条件下的节点

时间:2012-06-07 21:08:25

标签: xpath conditional-statements intersect

我正在使用XPath进行查询,不知怎的,我无法让它工作。 我当然在我的“车库”里有更多的车,但为了解决这个问题,这两个节点会做到这一点:

<garage>
<car>
     <data>
        <brand name="Mazda" model="MX5"></brand>
        <country>Japan</country>
        <ctype>Cabriolet</ctype>
        <motor fueltype="Super">
            <ps>146</ps>
            <kw>107</kw> 
            <umin>5000</umin>
        </motor>
        <price>22000</price>
     </data>
</car>


<car>
    <data>
        <brand name="Audi" model="RS6"></brand>
        <country>Germany</country>
        <ctype>Limousine</ctype>
        <motor fueltype="Super">
            <ps>580</ps>
            <kw>426</kw> 
            <umin>6250</umin>
        </motor>
        <price>108000</price>
     </data>
</car>
</garage>

我想要计算所有来自日本的汽车并且至少达到100 ps(ps意味着德国的马力)。在上面的示例中,结果应为1,因为只有mx5匹配两个条件。我试过“和”,我试着“相交”,现在我出去了。有人可以帮帮我吗,请!!!!!!

1 个答案:

答案 0 :(得分:2)

你走了:

/garage/car[data/country = 'Japan' and data/motor/ps >= 100]

或:

/garage/car[data/country = 'Japan'][data/motor/ps >= 100]

或:

/garage/car[data[country = 'Japan'][motor/ps >= 100]]

以上都是等同的。要获得计数,请使用count(...)包装上述任何内容。