2010-04-05 11 views
5

cómo seleccionar un elemento basado en un pedido y dependiente de su existencia en XPath? Por ejemplo, cómo seleccionar el mejor video de calidad, si existe.Xpath cómo seleccionar un elemento basado en un pedido y dependiente de su existencia

<VIDEOS> 
    <LOW_RES>video_L.flv</LOW_RES> 
    <HI_RES>video_H.flv</HI_RES> 
    <HD/> 
</VIDEOS> 

Esto debería devolver video_H.flv porque la versión HD no existe

puede existir este caso (los nombres de los videos pueden ser al azar):

<VIDEOS> 
    <LOW_RES>video_L.flv</LOW_RES> 
    <HI_RES>video_H.flv</HI_RES> 
    <HD>video_hd.mp4</HD> 
</VIDEOS> 

esto debe volver video_hd. mp4 porque la versión hd existe. Muchas gracias.

+0

no estás sólo en busca de la última elemento secundario de videos que tiene el texto? – sisis

+0

Buena pregunta (+1). Vea mi respuesta para una solución completa de solo XPath. :) –

Respuesta

2

Uso:

/*/HD[text()] 
| 
/*/HI_RES[text() and not(../HD/text())] 
| 
/*/LOW_RES[text() and not(../HD/text()) and not(../HI_RES/text())] 
+0

funciona, gracias :) – hokkos

Cuestiones relacionadas