tutorial - Consulta XPATH para filtrar valores en ciertos atributos solamente
xpath obtener el valor de un atributo (1)
Tengo el siguiente XML:
<Library>
<Item>
<Field Name="Name">smooth</Field>
<Field Name="File Type">mid</Field>
<Field Name="File Size">60026</Field>
</Item>
<Item>
<Field Name="Name">mid</Field>
<Field Name="File Type">mp3</Field>
<Field Name="File Size">4584972</Field>
</Item>
</Library>
Me gustaría obtener todos los nombres de elementos de los elementos del tipo de archivo "medio". Mi consulta XPATH se ve como
/Library/Item/Field
[
@Name="Name" and
(../Field[@Name="File Type" and ../Field[.="mid"]])
]
Pero desafortunadamente ambos artículos son devueltos desde esa consulta.
smooth
mid
Parece que la última condición no se verifica en los campos con el atributo "Tipo de archivo" solamente, sino en todos los campos. Lo que da como resultado una devolución del nombre "mid", incluso si este elemento es de tipo de archivo "mp3".
¿Cómo puedo restringir la comparación con "mid" al valor del campo con el atributo Name = "File Type"?
¿Alguien puede sugerirme una sintaxis XPATH que funcione como se espera?
Los predicados XPath se pueden aplicar en cualquier lugar, esto sería más sencillo:
/Library/Item[Field[@Name="File Type"] = "mid"]/Field[@Name="Name"]
Tu propia expresión sería correcta como
/Library/Item/Field[
@Name="Name"
and ../Field[@Name="File Type"] = "mid"
]