我有一个包含以下元素的示例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中的位置运行此查询,则运行OK:
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
我在做什么错了?
答案 0 :(得分: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>
您的错误是要遍历错误的元素。就是这样。