XPath es un lenguaje de consulta diseñado para utilizarse con documentos XML, pero puede utilizarlo con cualquier estructura de árbol para realizar consultas de contenido.
WebSphere Message Broker utiliza XPath para seleccionar elementos del árbol lógico de mensaje independientemente del formato de la corriente de bits. La terminología utilizada en este tema se basa en la terminología utilizada en la definición de W3C de XPath 1.0. Para obtener más información sobre XPath y la definición W3C del estándar de XPath 1.0, consulte Especificación W3C XPath 1.0. Para ver ejemplos del uso de XPath, consulte el tema sobre MbXPath en la documentación de API de extensiones Java definidas por el usuario.
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>
El prefijo de espacio de nombres es conveniente para representar el espacio de nombres, pero sólo es significativo en el documento que define dicha correlación. El URI de espacio de nombres 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 XMLNSC y MRM sólo exponen el URI de espacio de nombres al intermediario y al código de usuario (ESQL o código de usuario). Utilizando ESQL, puede configurar sus propias correlaciones para crear abreviaturas para estas URI potencialmente largas. 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())");