XPath è un linguaggio query progettato per l'utilizzo con documenti XML, ma è possibile applicarlo a qualsiasi struttura ad albero per scopi di query. XPath viene utilizzato da WebSphere Message Broker per selezionare elementi dall'albero logico dei messaggi indipendentemente dal formato del flusso di bit. Per ulteriori informazioni su XPath e sulla definizione W3C di XPath 1.0 standard, fare riferimento a XPath. La terminologia utilizzata in questo argomento è basata sulla terminologia utilizzata nella definizione W3C di XPath 1.0.
E' possibile richiamare il metodo evaluateXPath() su un oggetto MbMessage (per percorsi assoluti) o su un oggetto MbElement (per percorsi relativi). L'espressione XPath è trasmessa al metodo come un parametro di stringa. Viene fornito un secondo formato di questo metodo che prende un oggetto MbXPath. Tale oggetto incorpora un'espressione XPath con file di associazione di variabili e mappature spazio dei nomi, se richieste.
<ns1:aaa xmlns:ns1='http://mydomain.com/namespace1' xmlns:ns2='http://mydomain.com/namespace2'> <ns2:aaa> <ns1:bbb/> </ns2:aaa> <n/ns1:aaa>
Mentre il prefisso dello spazio dei nomi è utile per rappresentare lo spazio dei nomi, è significativo solo all'interno del documento che definisce tale mappatura. E' l'URI dello spazio dei nomi che definisce il significato globale. Inoltre, il concetto di un prefisso spazio dei nomi non è significativo per documenti creati in un flusso di messaggi poiché è possibile assegnare un URI di spazio dei nomi a un elemento di sintassi senza aver definito una mappatura xmlns.
Per tale ragione i programmi di analisi XMLNS(C) e MRM espongono solo l'URI dello spazio dei nomi al broker e al codice utente (ESQL o codice plug-in). ESQL consente di impostare le proprie mappature per creare abbreviazioni per tali URI potenzialmente lunghi. Tali mappature non sono correlate in alcun modo ai prefissi definiti nel documento XML (sebbene sia possibile che abbiano lo stesso nome).
MbMessage msg = assembly.getMessage(); List chapters= (List)msg.evaluateXPath("/document/chapter"); // this returns a list of all chapters in the document (length 1) MbElement chapter = (MbElement)chapters.get(0); // the first one // values can also be extracted directly using XPath String title = (String)msg.evaluateXPath("string(/document/chapter/@title)"); String chapterText = (String)msg.evaluateXPath("string(/document/chapter/text())");