2011-10-28 28 views
5

Tengo que seleccionar códigos de calificación de una etiqueta de clasificación similar a la siguiente, pero solo cuando la agencia es 'SP' o 'SNP'. En este momento tengo:¿Cómo usar XPath para seleccionar múltiples valores de texto posibles?

./ratings/rating/agency[text()='SNP'|text()='SP']/../code 

Esto no parece estar funcionando sin embargo. ¿Qué estoy haciendo mal?

<ratings> 
    <rating> 
    <agency>SP</agency> 
    <provider>SP</provider> 
    <type>LONG TERM</type> 
    <currencyType>LOCAL</currencyType> 
    <description>SP Standard LT LC rating</description> 
    <code>BBB+</code> 
    <date>2011-09-07</date> 
    </rating> 
</ratings> 

Gracias,

Jared

Respuesta

9

Lo principal es el operador de unión | la que usted ha tratado de utilizar como un 'o' . Cambiarlo a or:

./ratings/rating/agency[text()='SNP' or text()='SP']/../code 

O de forma más natural,

ratings/rating[agency[. = 'SNP' or . = 'SP']]/code 

En XPath 2.0, se puede utilizar una secuencia:

ratings/rating[agency = ('SNP', 'SP')]/code 
1

Uso or en lugar de |

./ratings/rating/agency[text()='SNP' or text()='SP']/../code 
Cuestiones relacionadas