2010-02-06 10 views
22

Quelle est l'expression XPath pour sélectionner <link> éléments avec type="application/rss+xml"OUtype="application/atom+xml" (RSS et Atom)Opérateur 'OU' dans le prédicat XPath?

  • link[@rel='alternate'][@type='application/rss+xml'] sélectionnent les flux RSS
  • link[@rel='alternate'][@type='application/atom+xml'] sélectionne flux Atom

Mais quelle est la Expression XPath unique pour les sélectionner tous les deux?

Merci.

Répondre

46

utilisation:

link[@rel='alternate'][@type='application/rss+xml' or @type='application/atom+xml'] 

voir http://www.w3.org/TR/xpath/#NT-OrExpr

Vous pouvez également utiliser l'union pour accomplir cette

link[@rel='alternate'][@type='application/rss+xml']|link[@rel='alternate'][@type='application/atom+xml'] 

mais or fera.

12

si vous voulez obtenir la fantaisie et utiliser XPath 2.0, il est plus élégant (mais peut prêter à confusion, selon qui pourrait être en train de lire le code) pour l'écrire comme ceci:

link[@rel='alternate'][@type = ('application/rss+xml', 'application/atom+xml')] 

la raison est XPath 2.0 redéfinit '=' pour s'appliquer aux séquences, ce qui signifie que la comparaison ci-dessus est vraie s'il y a une correspondance lors de la comparaison d'éléments de la séquence de gauche avec la comparaison d'éléments de la séquence de droite. Cela peut être très utile si la liste de choses que vous voulez comparer est dynamique.