XPath 예제
이 장에서는 예제를 통해 기본 XPath 문법을 배우겠습니다.
XML 예제 문서
저희는 아래의 예제에서 이 XML 문서를 사용하겠습니다:
"books.xml" :
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
XML 문서 로드
모든 현대 브라우저는 XMLHttpRequest를 사용하여 XML 문서를 로드하는 방법을 지원합니다。
대부분의 현대 브라우저에 대한 코드:
var xmlhttp=new XMLHttpRequest()
오래된 마이크로소프트 브라우저(IE 5와 6)에 대한 코드:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
노드 선택
죄송합니다만, Internet Explorer와 다른 XPath 처리 방식을 사용합니다。
우리의 예제는 대부분의 주요 브라우저에 적용되는 코드를 포함하고 있습니다。
Internet Explorer는 selectNodes() 메서드를 사용하여 XML 문서에서 노드를 선택합니다:
xmlDoc.selectNodes(xpath);
Firefox, Chrome, Opera 및 Safari는 evaluate() 메서드를 사용하여 XML 문서에서 노드를 선택합니다:
xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE, null);
첫 번째 book의 title 선택
아래의 예제는 bookstore 요소 아래의 첫 번째 book 요소의 title을 선택합니다:
/bookstore/book[1]/title
이 문제가 있습니다. 위의 예제는 IE와 다른 브라우저에서 다른 결과를 출력합니다。
IE5 및 이상 버전에서 [0]은 첫 번째 노드로 간주되며, W3C의 표준에 따르면 [1]이어야 합니다。
IE5+에서 [0]과 [1]의 문제를 해결하기 위해 XPath에 언어 선택(SelectionLanguage)을 설정할 수 있습니다。
아래의 예제는 bookstore 요소 아래의 첫 번째 book 요소의 title을 선택합니다:
xml.setProperty("SelectionLanguage","XPath"); xml.selectNodes("/bookstore/book[1]/title");
35 이상의 가격을 가진 price 노드를 선택합니다
아래의 예제는 가격이 35보다 높은 모든 price 노드를 선택합니다:
/bookstore/book[price>35]/price
가격이 35보다 높은 title 노드 선택
아래의 예제는 가격이 35보다 높은 모든 title 노드를 선택합니다:
/bookstore/book[price>35]/title