为什么我使用WHERE的查询不起作用,但我的XPath查询呢?

问题描述 投票:0回答:1

我有一个带有这些元素的xml示例:

<tienda>
  <empleados>
    <empleado cod="B">
      <nombre>Juan</nombre>
      <localidad>Linares</localidad>
      <provincia>Jaén</provincia>
    </empleado>
    <empleado cod="B">
      <nombre>Pepe</nombre>
      <localidad>Algeciras</localidad>
      <provincia>Cádiz</provincia>
    </empleado>
    <empleado cod="A">
      <nombre>Víctor</nombre>
      <localidad>Jaén</localidad>
      <provincia>Jaén</provincia>
    </empleado>
    <empleado cod="A">
      <nombre>Luisa</nombre>
      <localidad>Granada</localidad>
      <provincia>Granada</provincia>
    </empleado>
    <empleado cod="A">
      <nombre>Pedro</nombre>
      <localidad>El Viso del Alcor</localidad>
      <provincia>Sevilla</provincia>
    </empleado>
    <empleado cod="A">
      <nombre>Andrés</nombre>
      <localidad>Sevilla</localidad>
      <provincia>Sevilla</provincia>
    </empleado>
    <empleado cod="C">
      <nombre>María</nombre>
      <localidad>Guadix</localidad>
      <provincia>Granada</provincia>
    </empleado>
  </empleados>
</tienda>

有一些省(省),我希望只检索格拉纳达和塞维利亚。

如果我使用XPath中的位置运行此查询,则运行正常:

for $e in doc("LMSGI06.1.xml")/tienda/empleados/empleado[provincia = "Granada" or provincia="Sevilla"]
return $e

结果:

<provincia>Granada</provincia>
<provincia>Sevilla</provincia>
<provincia>Sevilla</provincia>
<provincia>Granada</provincia>

但实际上我想使用条款Where我尝试了这个,但查询检索所有省份。

for $e in doc("LMSGI06.1.xml")/tienda/empleados
where $e/empleado/provincia = "Granada"
  or $e/empleado/provincia = "Sevilla"
return $e/empleado/provincia

我究竟做错了什么?

xml xpath xquery
1个回答
1
投票

更改您的XQuery以迭代empleado元素,如下所示:

for $e in doc("LMSGI06.1.xml")/tienda/empleados/empleado
where $e/provincia = "Granada" or $e/provincia = "Sevilla"
return $e/provincia

输出是:

<provincia>Granada</provincia>
<provincia>Sevilla</provincia>
<provincia>Sevilla</provincia>
<provincia>Granada</provincia>

你的错误是迭代错误的元素。就这样。

© www.soinside.com 2019 - 2024. All rights reserved.