XPath는 XML 문서를 사용하도록 설계된 조회 언어이지만 조회 목적으로 트리 구조에 적용할 수 있습니다. WebSphere Message Broker는 XPath를 사용하여 비트 스트림 형식에 관계없이 논리 메시지 트리에서 요소를 선택합니다. XPath 및 XPath 1.0 표준의 W3C 정의에 대한 자세한 정보는 XPath를 참조하십시오. 이 주제에서 사용되는 용어는 XPath 1.0의 W3C 정의에 사용된 용어를 기초로 합니다.
evaluateXPath() 메소드는 MbMessage 오브젝트(절대 경로의 경우)나 MbElement 오브젝트(상대 경로의 경우)에서 호출됩니다. XPath 표현식은 문자열 매개변수로 메소드에 전달됩니다. MbXPath 오브젝트를 취하는 이 메소드의 두 번째 양식이 제공됩니다. 이 오브젝트는 변수 바인딩 및 네임스페이스 맵핑(필요할 경우)과 함께 XPath 표현식을 캡슐화합니다.
<ns1:aaa xmlns:ns1='http://mydomain.com/namespace1' xmlns:ns2='http://mydomain.com/namespace2'> <ns2:aaa> <ns1:bbb/> </ns2:aaa> </ns1:aaa>
네임스페이스 접두부는 네임스페이스를 표시하는 데 편리하지만 해당 맵핑을 정의하는 문서에서만 의미가 있습니다. 전역 의미를 정의하는 것은 네임스페이스 URI입니다. 또한 네임스페이스 접두부 개념은 메시지 플로우에서 생성되는 문서에는 의미가 없습니다. 네임스페이스 URI는 정의된 xmlns 맵핑 없이 구문 요소에 지정할 수 있기 때문입니다.
이와 같은 이유로 XMLNS(C) 및 MRM 구문 분석기는 네임스페이스 URI만 브로커와 사용자 코드(ESQL 또는 플러그인 코드)에 노출합니다. ESQL에서는 사용자가 자신의 고유 맵핑을 설정하여 잠재된 긴 URI의 약어를 작성할 수 있습니다. 이 맵핑은 어떤 방식으로든지 XML 문서에 정의된 접두부에 관련되지 않습니다(이름이 같아도).
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())");