XPath é uma linguagem de consulta projetada para utilização com documentos XML, mas pode ser aplicada a qualquer estrutura em árvore para finalidades de consulta. WebSphere Message Broker utiliza XPath para selecionar elementos da árvore de mensagens lógica, independentemente do formato do fluxo de bits. Para obter informações adicionais sobre XPath e a definição do W3C do padrão XPath 1.0, consulte XPath. A terminologia utilizada neste tópico é baseada na terminologia utilizada na definição do W3C para XPath 1.0.
O método evaluateXPath() pode ser chamado em um objeto MbMessage (para caminhos absolutos) ou em um objeto MbElement (para caminhos relativos). A expressão XPath é tramsitida ao método como um parâmetro de cadeia. Uma segunda forma desse método é fornecida, utilizando o objeto MbXPath. Esse objeto encapsula uma expressão XPath juntamente com ligações de variáveis e mapeamentos de espaço de nomes, se forem requeridos.
<ns1:aaa xmlns:ns1='http://mydomain.com/namespace1' xmlns:ns2='http://mydomain.com/namespace2'> <ns2:aaa> <ns1:bbb/> </ns2:aaa> </ns1:aaa>
Apesar do prefixo do espaço de nomes ser conveniente para representar o espaço de nomes, é significativo somente no documento que define esse mapeamento. O URI do espaço de nomes é que define o significado global. Além disso, o conceito de um prefixo do espaço de nomes não é significativo para documentos gerados em um fluxo de mensagens, pois uma URI de espaço de nomes pode ser designada a um elemento de sintaxe sem a definição de um mapeamento xmlns.
Por essa razão, os analisadores XMLNS(C) e MRM expõem somente a URI do espaço de nomes para o intermediário e o código do usuário (código ESQL ou plug-in). O ESQL permite que o usuário configure seus próprios mapeamentos para criar abreviações para esses URIs potencialmente longos. Esses mapeamentos não estão relacionados de forma alguma a prefixos definidos no documento XML (apesar de eles poderem ter o mesmo nome).
MbMessage msg = assembly.getMessage(); List chapters= (List)msg.evaluateXPath("/document/chapter"); // isso retorna uma lista de todos os capítulos do documento (comprimento 1) MbElement chapter = (MbElement)chapters.get(0); // o primeiro // valores também podem ser extraídos diretamente utilizando XPath String title = (String)msg.evaluateXPath("string(/document/chapter/@title)"); String chapterText = (String)msg.evaluateXPath("string(/document/chapter/text())");