XML и XPath

XPath - это язык для поиска информации внутри XML документа.

Что такое XPath?

  • XPath - специальный язык для определения частей XML документа
  • XPath использует маршрутные выражения для навигации по XML документам
  • XPath содержит библиотеку стандартных функций
  • XPath - главный элемент в XSLT
  • XPath также используется в XQuery, XPointer и XLink

Маршрутные выражения XPath

XPath использует маршрутные выражения для выбора узлов или узловых наборов в XML документе. Эти маршрутные выражения похожи на те выражения, которые можно увидеть при работе с традиционными файловыми системами.

В настоящее время выражения XPath можно использовать в JavaScript, Java, XML схемах, PHP, Python, C и C++, а также во множестве других языках программирования.

XPath используется в XSLT

XPath является главным составляющим элементом стандарта XSLT.

Знание XPath позволит в полной мере использовать все возможности XSL.

Пример XPath

Для демонстрации XPath будем использовать следующий XML документ:


<?xml version="1.0" encoding="UTF-8"?>
<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>

В приведенной ниже таблице представлены некоторые выражения XPath и результат их работы:

Выражение XpathРезультат
/bookstore/book[1]Выбирает первый элемент book, который является потомком элемента bookstore
/bookstore/book[last()]Выбирает последний элемент book, который является потомком элемента bookstore
/bookstore/book[last()-1]Выбирает предпоследний элемент book, который является потомком элемента bookstore
/bookstore/book[position()<3]Выбирает первые два элемента book, которые являются потомками элемента bookstore
//title[@lang]Выбирает все элементы title с атрибутом lang
//title[@lang='en']Выбирает все элементы title с атрибутом lang, который имеет значение 'en'
/bookstore/book[price>35.00]Выбирает все элементы book, которые являются потомками элемента bookstore и которые содержать элемент price со значением больше 35.00
/bookstore/book[price>35.00]/titleВыбирает все элементы title элементов book элементов bookstore, которые содержать элемент price со значением больше 35.00
Подробнее о XPath читайте в нашем Учебнике по XPath.