2009-06-17 13 views
5

Tengo el siguiente código XML:¿Cómo puedo obtener comodines para trabajar en la coincidencia de valores de atributos XPath?

<root> 
    <foo> 
    <bar type="a whole bunch of stuff, then a magic string: MUPPET" /> 
    <value>my Muppet value</value> 
    </foo> 
    <foo> 
    <bar type="some other stuff, then a different magic string: GREMLIN" /> 
    <value>my Gremlin value</value> 
    </foo> 
</root> 

me gustaría construir una consulta XPath que devuelve "mi valor Muppet" (la cadena) dada la cadena "MUPPET" magia. Mi conjetura era:

/root/foo[contains(bar/@type,'MUPPET')]/value/text() 

pero eso no parece funcionar. Realmente no estoy seguro de si ese operador contains(x,y) permite una consulta como el primer parámetro. Como cuestión secundaria, no estoy seguro de si necesito el text() al final.

¿Algún ayuda?

Respuesta

5

simplemente he comprobado con esta evaluadores XPATH en línea y se está trabajando muy bien:

http://www.mizar.dk/XPath/Default.aspx

+0

Tiene toda la razón; ¡seguro lo hacen! Y eso responde mi pregunta sobre/text(), también. Debe ser un problema con el motor XPath de IBM en Eclipse. Hrm. –

0

¿Estás seguro de que no tiene un problema de espacio de nombres con su XPath?

+0

No lo creo; Creo que es un problema con la herramienta de informes BIRT de IBM, no con la consulta XPath. Si cambio la consulta de "./foo[contains(bar/@type,'MUPPET ')]/value/text()" a "." Todavía no recibo nada. Ciertamente "." debe coincidir _algo –

Cuestiones relacionadas