2010-04-05 3 views
5

comment sélectionner un élément basé sur un ordre et dépendant de son existence dans XPath? Par exemple, comment sélectionner la meilleure qualité vidéo si elle existe.Xpath comment sélectionner un élément basé sur un ordre et dépendant de son existence

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

cela devrait revenir video_H.flv parce que la version hd n'existe pas

ce cas peut exister (les noms des vidéos peuvent être aléatoires):

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

cela devrait revenir video_hd. mp4 parce que la version hd existe. Merci beaucoup.

+0

ne sont pas vous cherchez juste le dernier élément enfant de vidéos qui a le texte? – sisis

+0

Bonne question (+1). Voir ma réponse pour une solution complète XPath seulement. :) –

Répondre

2

Utilisation:

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

ça marche, merci :) – hokkos

Questions connexes