XPath — Википедия

Xpath — декларативный язык запросов к элементам xml или (x)html документа и xslt преобразований.

Полезные источники:

Полная спецификация по Xpath 1.0 на русском здесь — http://citforum.ru/internet/xpath/xpath.shtml.

Xpath Online Tester — http://www.xpathtester.com/xpath/

Содержание

Использование Xpath в Firebug

Для поиска DOM элементов по Xpath в Firebug есть встроенная ф-ция:

Тип результата:

Пример использования XPATH запросов в Firebug:

Примеры

Базовый синтаксис

Пути

Отношения

Получение узлов

Позиция элемента

Атрибуты и фильтры

[] — указывает на фильтрацию элементов

Функции

Базовые функции Xpath — http://www.w3.org/TR/xpath/#corelib

Математика

Группирование

Составные условия фильтрации

Все ссылки у которых атрибут data-id совпадает с этим же атрибутом у строки таблицы:

категория: IT / WEB / Internet

Для выбора узлов и наборов узлов в XML документе XPath использует выражения путей. Узел выбирается следуя по заданному пути или по, так называемым, шагам.

Пример XML документа

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

Выбор узлов

Чтобы выбрать узлы в XML документе, XPath использует выражения пути.

Краткое руководство по XPath

Узел выбирается следуя по заданному пути. Наиболее полезные выражения пути:

Выражение Результат
имя_узла Выбирает все узлы с именем «имя_узла»
/ Выбирает от корневого узла
// Выбирает узлы от текущего узла, соответствующего выбору, независимо от их местонахождения
. Выбирает текущий узел
.. Выбирает родителя текущего узла
@ Выбирает атрибуты

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

Выражение XPath Результат
messages Выбирает все узлы с именем «messages»
/messages Выбирает корневой элемент сообщений
Примечание: Если путь начинается с косой черты ( / ), то он всегда представляет абсолютный путь к элементу!
messages/note Выбирает все элементы note, являющиеся потомками элемента messages
//note Выбирает все элементы note независимо от того, где в документе они находятся
messages//note Выбирает все элементы note, являющиеся потомками элемента messages независимо от того, где они находятся от элемента messages
//@date Выбирает все атрибуты с именем date

Предикаты

Предикаты позволяют найти конкретный узел или узел с конкретным значением.

Предикаты всегда заключаются в квадратные скобки.

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

Выражение XPath Результат
/messages/note[1] Выбирает первый элемент note, который является прямым потомком элемента messages.
Примечание: В IE 5,6,7,8,9 первым узлом будет [0], однако согласно W3C это должен быть [1]. Чтобы решить эту проблему в IE, нужно установить опцию SelectionLanguage в значение XPath.
В JavaScript: xml.setProperty(«SelectionLanguage»,»XPath»);
/messages/note[last()] Выбирает последний элемент note, который является прямым потомком элемента messages.
/messages/note[last()-1] Выбирает предпоследний элемент note, который является прямым потомком элемента messages.
/messages/note[position() Выбирает первые два элемента note, которые являются прямыми потомками элемента messages.
//heading[@date] Выбирает все элементы heading, у которых есть атрибут date
//heading[@date=»10/01/2008″] Выбирает все элементы heading, у которых есть атрибут date со значением «10/01/2008»

Выбор неизвестных заранее узлов

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

Спецсимвол Описание
* Соответствует любому узлу элемента
@* Соответствует любому узлу атрибута
node() Соответствует любому узлу любого типа

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

Выражение XPath Результат
/messages/* Выбирает все элементы, которые являются прямыми потомками элемента messages
//* Выбирает все элементы в документе
//heading[@*] Выбирает все элементы heading, у которых есть по крайней мере один атрибут любого типа

Выбор нескольких путей

Использование оператора | в выражении XPath позволяет делать выбор по нескольким путям.

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

Выражение XPath Результат
//note/heading | //note/body Выбирает все элементы heading И body из всех элементов note
//heading | //body Выбирает все элементы heading И body во всем документе

Оси XPath Вверх Терминология в XPath

Функция contains (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 невозможно создавать документы XSLT.

Пример XPath

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

В приведенной ниже таблице представлены некоторые выражения 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=’eng’] Выбирает все элементы title с атрибутом lang, который имеет значение ‘eng’
/bookstore/book[price>35.00] Выбирает все элементы book, которые являются потомками элемента bookstore и которые содержать элемент price со значением больше 35.00
/bookstore/book[price>35.00]/title Выбирает все элементы title элементов book элементов bookstore, которые содержать элемент price со значением больше 35.00

Отображение XML с использованием XSLT Вверх XML DOM

Наиболее часто используемые XSLT и XPath функции

Функции XSLT

  • node-setcurrent() — возвращает текущий узел преобразования;
  • node-setdocument(object, node-set) — позволяет обращаться к внешним документам по заданным URI. Первый узел необязательного параметра node-set принимается за точку отсчета для относительных URI;
  • booleanelement-available(string) — проверяет доступность элемента или множества, указанного в параметре. В качестве параметра принимает строку — имя искомого элемента;
  • stringformat-number(number, format, name?) — возвращает число number в виде строки, отформатированной в соответствии с параметром format. Необязательный параметр name — это имя QName, задающее формат в соответствии правилами элемента <xsl:decimal-format>;
  • booleanfunction-available(string) — проверяет доступность функции указанной в параметре. В качестве параметра принимает строку — имя функции;
  • stringgenerate-id(node-set) — присваивает уникальный строковый идентификатор первому узлу переданного множества node-set или контекстного узла, если аргумент опущен;
  • node-setkey(name, value) — по данному имени name и значению ключа value возвращает множество узлов, которые им обладают. Ключи создаются при помощи элемента <xsl:key>;
  • stringsystem-property(string)— возвращает значения системных свойств, имя которых передается как аргумент;
    • xsl:version — возвращает версию XSLT процессора;
    • xsl:vendor — возвращает производителя XSLT процессора;
    • xsl:vendor-url — возвращает URL, идентифицирующий производителя.
  • stringunparsed-entity-uri(string) — предоставляет доступ к не разбираемым сущностям, возвращая URI сущности по ее имени.

Функции XPath

Логические функции

  • booleanboolean(object)— функция возвращает логическое значение переданного ей объекта;
    • number — если число равно нулю возвращает ложь, иначе — истину. NaN всегда возвращает ложь;
    • string — если строка не пуста возвращает истину, иначе — ложь;
    • boolean — значение не изменяется;
    • node-set — пустой набор узлов дает ложь, иначе — истину.
  • booleanfalse() — функция возвращает ложь;
  • booleanlang(string) — функция проверяет соответствие языка контекстного узла(определенного параметром xml:lang) переданному ей языку в виде строки string;
  • booleannot(boolean) — выполняет логическое отрицание;
  • booleantrue() — функция возвращает истину.

Числовые функции

  • numberceiling(number) — округляет аргумент до ближайшего целого, не меньшего переданного функции числа;
  • numberfloor(number) — округляет аргумент до ближайшего целого, не большего переданного функции числа;
  • numbernumber(object?) — явным образом приводит переданный функции объект в числовой тип. Если аргумент опущен, то применяется к множеству контекстного узла;
  • numberround(number) — округляет аргумент до ближайшего целого значения;
  • numbersum(node-set) — суммирует значения узлов переданного ей множества.

Строковые функции

  • stringconcat(string, string, …) — возвращает конкатенацию аргументов;
  • booleancontains(string, string) — принимает на вход два строковых аргумента и возвращает true, если первая строка содержит вторую и false в противном случае;
  • stringnormalize-space(string?) — удаляет начальные и завершающие разделительные символы, нормализует все внутренние идущие подряд разделители в один пробел. Если аргумент опущен, выполняется со строковым значением контекстного узла;
  • booleanstarts-with(string, string) — принимает на вход два строковых аргумента и проверяет начинается ли первая строка со второй;
  • stringstring(object?) — приводит объект к строковому типу явным образом. Если аргумент опущен, то применяется к множеству контекстного узла;
  • numberstring-length(string?) — возвращает длину переданного ей строкового аргумента. Если аргумент опущен, то применяется к контекстному узлу;
  • stringsubstring(string, number, number?) — возвращает подстроку переданного ей строкового аргумента, начинающуюся с позиции определенной вторым аргументом и длиной, указанной третьим аргументом. Если третий аргумент не передан, то подстрока продолжается до конца строки;
  • stringsubstring-after(string, string) — принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая за ней следует;
  • stringsubstring-before(string, string) — принимает на вход два строковых аргумента, находит в первой строке вторую и возвращает подстроку, которая ей предшествует;
  • stringtranslate(string, string, string) — производит замену символов первого своего строкового аргумента, которые присутствуют во втором аргументе на соответствующие символы третьего аргумента.

Функции для работы с наборами узлов

  • numbercount(node-set) — возвращает число узлов в наборе node-set, переданного ей в качестве аргумента;
  • node-setid(id-value) — возвращает множество узлов по уникальным идентификаторам;
  • numberlast() — возвращает позицию последнего узла в наборе узлов;
  • stringlocal-name(node-set?) — возвращает локальное (неполное) имя узла, или имя первого узла множества.

    Получить текст xpath содержит текст()

    Если node-set не передан, функция вернет имя контекстного узла;

  • stringname(node-set?) — возвращает полное имя узла, или имя первого узла множества. Если node-set не передан, функция вернет локальную часть имени контекстного узла;
  • stringnamespace-uri(node-set?) — возвращает URI пространства имен а расширенном имени узла;
  • numberposition() — возвращает позицию контекстного узла в наборе узлов.

Не нашли ответ на свой вопрос в документации? Направьте обращение в или онлайн чат.

Разработчик Vity
Windows XP/Vista/7
Интерфейс Многоязычный (в т.ч. Русский)
Лицензия FreeWare
Цена Бесплатная
Дата обновления 21.05.2014 история обновлений
Дата добавления
Загружено вчера 2
Загружено за 7 дней 12
Загружено всего 11021

FreeRapid Downloader — это быстрый автоматический менеджер загрузок с популярных файлообменников. Для загрузки выбранного вами файла Вам только нужно скопировать и вставить ссылки из вашего браузера в данное приложения. Далее FreeRapid Downloader все сделает за вас. Больше не нужно переходить по множеству ненужных ссылок или несказанно долго ждать. Процесс загрузки отныне с помощью FreeRapid Downloader значительно упрощается.
Для работы FreeRapid Downloader требуется Java версии 6.0 или выше. Если у вас она не установлена, то при первом запуске программа сама предложит ее скачать и установить.

Основные возможности программы FreeRapid Downloader:

  • поддержка одновременного скачивания с нескольких сервисов
  • скачивание с использованием прокси-списка
  • загрузка истории
  • смарт-мониторинг буфера обмена
  • автоматическая проверка файла на наличие на сервере
  • автоматическое выключение функции
  • автоматические обновления плагинов
  • легкий в использовании
  • мультиязычный интерфейс — Чешский, Португальский, Датский, Английский, Французский, Немецкий, Венгерский, Китайский, Индонезийский, Итальянский, Японский, Польский, Русский, Словацкий, Испанский, Турецкий, Украинский.

Поддерживаемые файлообменники:

  • Rapidshare.com (+ premium)
  • MegaUpload.com
  • Megarotic.com and Sexuploader.com
  • NetLoad.in
  • MediaFire.com
  • FileFactory.com
  • Filebase.to
  • Uploaded.to
  • DepositFiles.com
  • Share-online.biz
  • Egoshare.com
  • Easy-share.com
  • Letibit.net
  • XtraUpload.de
  • Shareator.com
  • Kewlshare.com
  • SaveFile.com
  • Ziddu.com
  • 4shared.com
  • Load.to
  • UploadBox.com
  • UGotFile.com
  • NetGull.com
  • Plunder.com
  • FileUpload.net
  • Przeklej.pl
  • Sendspace.pl
  • Uppit.com
  • FileFlyer.com
  • Indowebster.com
  • EasyShare.ws
  • Freakshare.net
  • Bigshare.eu
  • UploadLine.com
  • Ifolder.ru
  • File2Box.com
  • WebShare.net
  • FileSend.net
  • 2Shared.com
  • Gigasize.com
  • Filebox.com
  • RSMonkey.com
  • Co.cc
  • GameTrailers.com
  • UserShare.net
  • Sharingmatrix.com
  • Imagebam.com
  • ImageHaven.net
  • Storage.to
  • Myurl.in
  • Uploading.com
  • Yourfiles.biz
  • Ultrashare.net
  • SendSpace.com
  • Wiiupload.com
  • Badongo.com
  • Hotfile.com
  • WikiUpload.com
  • DataUp.de
  • Rapidshare.de
  • BitRoad.net
  • Jandown.com
  • iFile.it
  • Picasa.google.com
  • Xun6.com
  • Filesmonster.com
  • Serienjunkies.com
  • Filer.net
  • Hamstershare.com
  • Iskladka.cz
  • HellShare.com (+full)
  • QuickShare.cz (+premium)
  • Uloz.to
  • Sdilej.cz
  • Multiload.cz
  • Uloz.cz
  • Share-rapid.com
  • Nahraj.cz
  • FlyShare.cz
  • Edisk.cz
  • Bagruj.cz
  • LeteckaPosta.cz
  • CZShare.com free (+profi)
  • Subory.sk
  • Upnito.sk
  • CobraShare.sk
  • Ulozisko.sk
  • Stream.cz (video)
  • O2MusicStream.cz (video)
  • Usercash.com (crypter)
  • Tinyurl.com (crypter)
  • Linkbucks.com (crypter)
  • RSMonkey.com (crypter)
  • Radikal.ru (crypter)
  • Paid4share.com (crypter)
  • Relink.us (crypter)
  • Anonym.to (crypter)
  • …others are coming…

Изменения в программе FreeRapid Downloader 0.9 Update 4 (18.05.2014):

  • Fixed: Recent files combobox uses MRU [by Tong2Shot — thanks!]
  • Fixed : widen up main frame`s status bar`s info label a bit as it got truncated on some LaFs that use bold font.
  • Fixed : plugins API — improved replaceInvalidCharsForFileSystem [by Ntoskrnl]
  • Changed : French translation, Bahasa Indonesia translation
  • Changed: rotate proxy per host [by Serge Baranov — thanks!]
  • Added: plugins API
    • Support for JSON parsing
    • Suggest file name
  • Changed: upgraded internal ObjectDB database to version 2.5.5

Последние комментарии:


Андрюша   03-02-2014 13:34

REED, программа хорошая и работает хорошо!
Ну не требует программа установки, её надо просто запустить и пользоваться.

Как получить братьев и сестер при использовании contains (text(),) в xpath

Что здесь плохого?


REED   21-01-2014 22:46

ЧУШЬ СОБАЧЬЯ АНЕ ПРОГРАММА СКАЧАЛ А ТАМ НЕ УСТАНОВЩИКА ТЕБЕ НИЧЕГО АВТОР    
НАВЕРНОЕ ПОЛНОСТЬЮ ЛИБО ИДИОТОМ ПРИКИДЫВАЕТСЯ ИЛИ НА САМОМ ДЕЛЕ ЭТО ТАК!


Evgenia   18-02-2013 01:41

Уже давно актуальна версия Freerapid 0.91. Программа работала и работает без установки. В 0.9 версии действительно  не было русского языка. Борется за первенство с  USD. Настройки простые, чтобы добавить закачку надо нажать плюсик. Капчу сейчас и с летитбит не распознает. На дерозите ожидает положенное время до закачки и не скачивает, приходится включать и выключать роутер (у меня ADSL). Положительно то, что продолжает закачку на летитбит с места остановки, если не меняли свой IP. Правда сейчас каждый раз после остановки приходится вводить капчу.


ИгЛа   15-12-2011 12:11

Научитесь работать на ПК!


Алексей   15-11-2011 06:21

Установил программу а переключиться на русский не могу, подскажите что сделать?


Сегодня мы плотно рассмотрим тему использования XPath вместе с PHP. Вы увидите на примерах, как XPath значительно сокращает количество кода. Рассмотрим использование запросов и функций в XPath.

В начале, предоставлю вам два типа документов: DTD и XML, на примере которых мы рассмотрим функционирование PHP DOM XPath. Вот как они выглядят:

<!ELEMENT library (book*)> <!ELEMENT book (title, author, genre, chapter*)> <!ATTLIST book isbn ID #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT genre (#PCDATA)> <!ELEMENT chapter (chaptitle,text)> <!ATTLIST chapter position NMTOKEN #REQUIRED> <!ELEMENT chaptitle (#PCDATA)> <!ELEMENT text (#PCDATA)><?xml version=»1.0″ encoding=»utf-8″?> <!DOCTYPE library SYSTEM «library.dtd»> <library> <book isbn=»isbn1234″> <title>A Book</title> <author>An Author</author> <genre>Horror</genre> <chapter position=»first»> <chaptitle>chapter one</chaptitle> <text><![CDATA[Lorem Ipsum…]]></text> </chapter> </book> <book isbn=»isbn1235″> <title>Another Book</title> <author>Another Author</author> <genre>Science Fiction</genre> <chapter position=»first»> <chaptitle>chapter one</chaptitle> <text><![CDATA[<i>Sit Dolor Amet…</i>]]></text> </chapter> </book> </library>

Основные XPath запросы

Простой синтаксис XPath позволяет обращаться к элементам XML документа. Наиболее простым способом, можно прописать путь к желаемому элементу. Используя XML документ, поданный выше, следующий XPath запрос возвратит коллекцию текущих элементов, находящихся в элементе book:

//library/book

Вот так! Два слеша впереди определяют корневой элемент документа, а один слеш производит переход к дочернему элементу book. Это просто и быстро, не так ли?

Но что, если вы хотите выбрать определенный элемент book из множества? Давайте предположим, что вам нужны книги «Определенного автора». XPath запрос для этого будет следующим:

//library/book/author[text() = "An Author"]/..

Вы можете использовать text() в квадратных скобках для сравнения значения узла. Также «/..» означает, что мы хотим использовать родительский элемент (т. е. возвращаемся на один узел выше).

XPath запросы осуществляются с помощью одной или двух функций: query() и evaluate(). Обе формируют запрос, но разница в возвращаемом результате. query() всегда будет возвращать DOMNodeList, в отличии evaluate() будет возвращать текстовый результат, если это возможно. Для примера, если ваш XPath запрос будет возвращать количество книг написанных определенным автором, тогда query() возвратит пустой DOMNodeList, evaluate() просто возвратит число, вы можете использовать это непосредственно для получения данных из узла.

Код и преимущества скорости XPath

Давайте рассмотрим простой пример, который будет возвращать количество книг написанных конкретным автором. Первый метод мы рассмотрим так, как мы всегда делаем, без использования XPath. Сейчас вы поймете, как это делается без XPath и насколько это проще делать с XPath.

Следующий метод возвращает такой же результат, но используется XPath для выбора тех книг, которые написанные определенным автором.

Заметьте, нам не нужно повторно проверять значение каждого элемента, чтобы определить, каким автором написана каждая книга. Но мы можем более упростить код, используя XPath функцию count(), чтобы подсчитать содержимое элементов этого пути.

Мы можем получить информацию, которую нам нужно, с помощью одной строки XPath запроса. Нет необходимости создавать множество PHP фильтров. Это наиболее простой и быстрый способ написать этот функционал!

Заметьте, что evaluate() использовался в последнем примере. Это потому что функция count() возвращает текстовый результат. Используя query(), возвратиться DOMNodeList, но он будет пустым.

XPath стоит использовать, не только потому что это делает ваш PHP код проще, это также дает преимущество в скорости выполнения кода. Я заметил, что первая версия была на 30% быстрее в среднем, по сравнению со второй. Но третья на 10% быстрее первой. Конечно же, это зависит от вашего сервера и запросов, которые используете. Использование XPath в его чистом виде, дает величайшие результаты в скорости и простоте написания кода.

XPath Функции

Вот несколько функций, которые могут использоваться с XPath. Также вы найдете множество ресурсов, которые детально рассматривают каждую доступную функцию. Если вам нужно вычислять DOMNodeList или сравнивать nodeValue (значение узла), можно найти подходящую XPath функцию, которая исключит использование лишнего PHP кода.

Вы уже это знаете на примере count() функции.

Введение в XPath (часть 3). Функции

Давайте воспользуемся функцией id(), для получение названий книг с заданными ISBN. Для этого нужно использовать следующее XPath выражение:

id("isbn1234 isbn1235")/title

Заметьте, значения, которые вы ищете не стоит заключать в скобки, только разделите их пробелами. Также не вздумайте влепить запятую:

Обработка сложных функций в XPath невероятно проста.

Использование PHP функций совместно с XPath

Иногда вам необходимо будет больше функциональности, которую не могут предоставить стандартные функции XPath. К счастью, PHP DOM позволяет взаимодействовать собственным функциям PHP с XPath запросами.

Давайте рассмотрим пример, который возвращает количество слов в названии книги. В этой простейшей функции, мы напишем следующее:

Но, мы также можем включить функцию str_word_count() непосредственно в XPath запрос. Это можно сделать с помощью нескольких шагов. Прежде всего, нам нужно зарегистрировать namespase с XPath объектом. PHP функции в XPath запросах вызываются с помощью строки «php:functionString», после чего прописывается имя желаемой функции. Также, namespace более подробно рассматривается на http://php.net/xpath. Другие значения namespace будут выдавать ошибку. После этого нам нужно вызвать registerPHPFunctions(). Эта функция сообщает PHP, что когда идет обращение через namespace «php:», этот вызов будет обрабатывать именно PHP.

Примерный синтаксис вызова функций будет следующим:

php:functionString("nameoffunction", arg, arg…)

Давайте совместим все это вместе в следующем примере функции getNumberOfWords():

Заметьте, что вам не нужно вызывать XPath функцию text() чтобы получить текст узла. Метод registerPHPFunctions() делает это автоматизированным. Хотя, следующий пример строки кода также будет валидным:

php:functionString('str_word_count',(//library/book[@isbn = '$isbn']/title[text()]))

Регистрирование PHP функций не ограничено для функций, которые включены в PHP. Вы можете определить свои собственные функции и использовать их внутри XPath. Единственное отличие в том, что придется использовать «php:function» вместо «php:functionString».

Давайте напишем функцию, которая будет за пределами класса, для демонстрации базовой функциональности. Функция, которую мы будем использовать, возвращает книги автора «George Orwell». Она должна возвращать true для каждого узла, который вы хотите включить в запрос.

<?php function compare($node) { return $node[0]->nodeValue == «George Orwell»; }

Аргумент, который передается в функцию, является массивом DOM элементов. Эта функция проходит по массиву и определяет нужные элементы, после чего включает их в DOMNodeList. В этом примере, испытываемый узел был /book, также мы использовали /author для определения нужных элементов.

Теперь мы можем создать функцию getGeorgeOrwellBooks():

Если функция compare() статическая, тогда вам нужно внести поправку в XPath запрос:

//library/book[php:function('Library::compare', author)]

Говоря по правде, вся эта функциональность могла быть реализована с помощью чистого XPath кода. Но, пример показывает, как можно расширять XPath запросы и делать их более комплексными.

В завершение

XPath – это отличный способ сократить количество кода и повысить его обработку, при работе с XML. Дополнительная функциональность PHP DOM позволяет вам расширить XPath функции. Это реально полезная штука, если вы будете ее использовать и углубляться в специфику, вам придется меньше и меньше писать кода.

Источник материала …

Дальше: Рисование на JavaScript с помощью Paper.js, Processing.js, Raphael.js

Дискуссия по теме     0 Комментариев

Добавить комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *