XPath es un lenguaje de consulta diseñado para utilizarse con documentos XML, pero se puede aplicar a cualquier estructura en árbol para realizar consultas. WebSphere Message Broker utiliza XPath para seleccionar elementos del árbol lógico de mensaje independientemente del formato de la corriente de bits. Para obtener más información sobre XPath y la definición de W3C del estándar de XPath 1.0, consulte XPath. La terminología utilizada en este tema se basa en la terminología utilizada en la definición de W3C de XPath 1.0.
El método evaluateXPath() se puede llamar en un objeto MbMessage (para vías de acceso absolutas) o en un objeto MbElement (para vías de acceso relativas). La expresión XPath se pasa el método como un parámetro de serie de caracteres. Se proporciona una segunda forma de este método que toma un objeto MbXPath. Este objeto encapsula una expresión XPath junto con enlaces de variable y correlaciones de espacio de nombres, si son necesarios.
<ns1:aaa xmlns:ns1='http://midominio.com/espacionombres1' xmlns:ns2='http://midominio.com/espacionombres2'> <ns2:aaa> <ns1:bbb/> </ns2:aaa> </ns1:aaa>
Aunque el prefijo de espacio de nombres es conveniente para representar el espacio de nombres, sólo es significativo en el documento que define dicha correlación. Es el URI de espacio de nombres que define el significado global. Asimismo, el concepto de prefijo de espacio de nombres no es significativo para documentos que se generan en un flujo de mensajes porque se puede asignar un URI de espacio de nombres a un elemento de sintaxis sin que se haya definido una correlación xmlns.
Por esta razón los analizadores XMLNS(C) y MRM sólo exponen el URI de espacio de nombres al intermediario y al código de usuario (código de plug-in o ESQL). ESQL permite al usuario configurar sus propias correlaciones para crear abreviaciones de estos URI potencialmente largos. Estas correlaciones no están relacionadas de ninguna forma con los prefijos que se definen en el documento XML (aunque pueden tener el mismo nombre).
MbMessage msg = assembly.getMessage(); List chapters= (List)msg.evaluateXPath("/document/chapter"); // esto devuelve una lista de todos los capítulos del documento (longitud 1) MbElement chapter = (MbElement)chapters.get(0); // el primero // también se pueden extraer valores directamente utilizando XPath String title = (String)msg.evaluateXPath("string(/document/chapter/@title)"); String chapterText = (String)msg.evaluateXPath("string(/document/chapter/text())");