Пример XPath
- Предыдущая страница Операторы XPath
- Следующая страница Введение в XSLT
В этом разделе мы рассмотрим базовые грамматические структуры 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()
Код для старых браузеров Microsoft (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);
Выберите все title
Ниже приведен пример, в котором выбираются все узлы title:
/bookstore/book/title
Выберите title первого book
Ниже приведен пример, в котором выбирается узел title первого book в элементе bookstore:
/bookstore/book[1]/title
Здесь есть проблема. В примерах, приведенных выше, в IE и других браузерах выводятся разные результаты.
IE5 и более новые версии считают [0] первым узлом, в то время как по стандартам W3C это должно быть [1].
Чтобы решить проблему с [0] и [1] в IE5+, можно установить языковой выбор (SelectionLanguage) для XPath.
Ниже приведен пример, в котором выбирается узел title первого book в элементе bookstore:
xml.setProperty("SelectionLanguage","XPath"); xml.selectNodes("/bookstore/book[1]/title");
Выберите все цены
Ниже приведен пример, в котором выбираются все тексты узлов price:
/bookstore/book/price/text()
Выберите узлы price с ценой выше 35
Ниже приведен пример, который выбирает все узлы price с ценой выше 35:
/bookstore/book[price>35]/price
Выбор узлов title с ценой выше 35
Ниже приведен пример, который выбирает все узлы title с ценой выше 35:
/bookstore/book[price>35]/title
- Предыдущая страница Операторы XPath
- Следующая страница Введение в XSLT