0

给定 XML:

  <?xml version="1.0" encoding="UTF-8"?> 
     <sensor-system>
        <velocity>120.00</velocity> <!-- km/h --> 
        <temperature location="inside">24.6</temperature> 
         <temperature location="outside">-12.5</temperature>

     <seats>

     <seat location="front">
          <id>1</id> 
          <temperature>32.5</temperature> 
          <heating-is-on/>

      </seat> 
    <seat location="back">

      <id>2</id>
      <temperature>23.5</temperature>
   </seat>

</seats>
  </sensor-system>

所需的 XML 路径:

给出一个绝对 XPATH,它标识所有前排座椅的温度大于或等于 20.0 且小于或等于 30.0 摄氏度。

我的解决方案请检查:

这个对吗 :

/sensor-system/seats[temperature>=20 | temperature <=30]/seat[@location="front"]

谢谢你。

4

2 回答 2

3

您的 xpath 不太正确,因为它期望温度元素是座位元素的子元素,而您应该检查座位元素。

编辑:另一件事要指出的是,在您原来的 xpath 中,您使用的是 '|' 运算符,它是联合运算符,它接受两个节点集作为参数。所以它在你的例子中不起作用,因为你的论点实际上是“条件”。

试试这个

/sensor-system/seats/seat[temperature >= 20][temperature <= 30][@location = "front"]

注意,如果您在 XSLT 中使用它,您可能必须在此处转义 <

/sensor-system/seats/seat[temperature >= 20][temperature &lt;= 30][@location = "front"]

尽管您可能更喜欢这样做

/sensor-system/seats/seat[temperature >= 20][not(temperature > 30)][@location = "front"]
于 2013-02-06T14:56:38.860 回答
-1

尝试这样做:

/sensor-system/seats/seat[@location="front"]/temperature >=20 and /sensor-system/seats/seat[@location="front"]/temperature <= 30

这将是true为了[@location="back"]false为了[@location="front"]

于 2013-02-06T14:58:44.623 回答