2010-02-06 13 views
22

¿Cuál es la expresión XPath para seleccionar <link> elementos con type="application/rss+xml"Otype="application/atom+xml" (RSS y Atom)'OR' operador en predicado XPath?

  • link[@rel='alternate'][@type='application/rss+xml'] selecciona los canales RSS
  • link[@rel='alternate'][@type='application/atom+xml'] selecciona Atom

pero lo que es el expresión única de XPath para seleccionarlos a ambos?

Gracias.

Respuesta

46

uso:

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

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

También se puede utilizar la unión para lograr esto

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

pero or va a hacer.

12

si usted desea conseguir la suposición y el uso de XPath 2.0, que es más elegante (pero potencialmente confusa, dependiendo que podrían estar leyendo el código) para escribir así:

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

la razón de esto es que XPath 2.0 redefine '=' para aplicar a secuencias, lo que significa que la comparación anterior devuelve verdadero si hay una coincidencia al comparar elementos de la secuencia de la izquierda con la comparación de elementos de la secuencia de la derecha. esto puede ser muy útil si la lista de cosas con las que quiere comparar es dinámica.