Xpath синтаксис примеры. Примеры xpath-запросов к html. Применение оси following-sibling

  • 05.04.2024

Сокращенный синтаксис XPath

Сокращения синтаксиса XPath могут быть весьма удобными. Ниже приведены правила:

Self::node() может быть сокращено как. ;

Parent::node() может быть сокращено как.. ;

Child::childname может быть сокращено как childname ;

Attribute::childname может быть сокращено как @childname ;

/descendant-or-self::node()/ может быть сокращено как // .

Например, путь расположения.//PLANET - сокращение для self::node()/descendant-or-self::node()/child::PLANET . Можно также сократить выражение предиката как , как и т.д. Работать с путями расположения XPath при помощи сокращенного синтаксиса значительно проще. В следующем списке перечислен ряд примеров путей расположения с использованием сокращенного синтаксиса:

PLANET возвращает дочерние элементы Контекстного узла;

* возвращает все дочерние элементы контекстного узла;

Text() возвращает все дочерние текстовые узлы контекстного узла;

@UNITS возвращает атрибут UNITS контекстного узла;

@* возвращает все атрибуты контекстного узла;

PLANET возвращает третьего ребенка Контекстного узла;

PLANET возвращает последнего ребенка Контекстного узла;

*/PLANET возвращает всех внуков Контекстного узла;

/PLANETS/PLANET/NAME возвращает второй элемент третьего элемента Элемента

//PLANET возвращает всех потомков Корня документа;

PLANETS//PLANET возвращает элементы-потомки Дочерних элементов Контекстного узла;

//PLANET/NAME возвращает все элементы , у которых есть родитель

Возвращает сам контекстный узел;

.//PLANET возвращает элементы-потомки Контекстного узла;

Возвращает родителя контекстного узла;

../@UNITS возвращает атрибут UNITS родителя контекстного узла;

.//.. возвращает всех родителей потомка контекстного узла и родителя контекстного узла;

PLANET возвращает детей ;

PLANET возвращает детей Контекстного узла, у которых есть дети с текстом, равным «Venus»;

PLANET[@UNITS="days"] возвращает всех детей Контекстного узла, у которых есть атрибут UNITS со значением « days »;

PLANET[@UNITS="days"] возвращает шестого ребенка Контекстного узла, только если у этого ребенка есть атрибут UNITS со значением «days». Можно также написать PLANET[@UNITS="days"] ;

PLANET[@COLOR and @UNITS] возвращает всех детей Контекстного узла, у которых есть атрибут COLOR и атрибут UNITS ;

" //PLANET " выбирает все элементы Значение которых отлично от значения любого предшествующего элемента

* выбирает любой элемент , который является первым ребенком своего родителя;

*[@UNITS] выбирает первых пятерых детей контекстного узла, у которых есть атрибут UNITS .

Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри П

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

Из книги Справочник по PHP автора

Из книги XSLT автора Хольцнер Стивен

Сокращенный синтаксис Для образцов существует два правила сокращения осей: child::childname может быть сокращено как childname; attribute::childname может быть сокращено как @childname.В следующем списке перечислен ряд примеров образцов с сокращенным синтаксисом; в конце главы вы увидите

Из книги Технология XSLT автора Валиков Алексей Николаевич

Сокращенный синтаксис предикатов Выражения предикатов можно сокращать, опуская "position()=". Например, становится , становится и т.д. С использованием сокращенного синтаксиса применять выражения XPath в предикатах становится существенно проще. Вот ряд

Из книги C++. Сборник рецептов автора Диггинс Кристофер

Из книги автора

Числа XPath В XPath числа хранятся в формате чисел с плавающей точкой двойной точности. В соответствии с формальным определением, числа XPath должны храниться в формате 64-разрядных чисел с плавающей точкой двойной точности IEEE 754, и все числа хранятся как числа с плавающей точкой

Из книги автора

Применение осей XPath К этому моменту мы рассмотрели три части шагов расположения - ось, условие узла и предикат. Вы должны быть знакомы с этими элементами по проделанной нами работе с образцами выбора, но обратите внимание на ось в предыдущем примере - preceding-sibling. До сих пор

Из книги автора

Проверка выражений XPath В пакет Xalan входит удобная программа-пример, ApplyXPath.java, позволяющая применить выражение XPath к документу и посмотреть на результат, что очень помогает при тестировании. Для запуска этого примера вам нужно будет скомпилировать ApplyXPath.java в ApplyXPath.class при

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 есть встроенная ф-ция:

$x(xpath [, contextNode [, resultType]])

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

XPathResult.NUMBER_TYPE XPathResult.STRING_TYPE XPathResult.BOOLEAN_TYPE XPathResult.FIRST_ORDERED_NODE_TYPE XPathResult.UNORDERED_NODE_ITERATOR_TYPE

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

$x("//tr[@data-place]/@data-place").value $x("string(//tr[@data-place]/@data-place)")

Примеры

//div //a //*/ancestor-or-self::button

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

Пути

. # текущий контекст.// # рекурсивный спуск (на ноль или более уровней от текущего контекста) /html/body # абсолютный путь table//a # относительный путь a # путь относительно текущего контекста //* # все в текущем контексте li/*/a # ссылки, являющиеся "внуками" для li //a|//button # ссылки и кнопки (объединение двух множеств узлов)

Отношения

a/i/parent::p # непосредственный родитель,

P/ancestor::* # все родители (http://bit.ly/1ta7mh9) p/following-sibling::* # все следующие братья p/preceding-sibling::* # все предыдущие братья p/following::* # все следующие элементы кроме потомков (http://bit.ly/1ta83H5) p/preceding::* # все предыдущие элементы кроме предков p/descendant-or-self::* # контекстный узел и все его потомки p/ancestor-or-self::* # контекстный узел и все его предки

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

/div/text() # получить текстовые узлы /div/text() # получить первый текстовый узел

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

a # первый элемент a # последний элемент a[i] # вторая ссылка, которая содержит элемент a # Первые 3 ссылки ul # список (UL), первый элемент которого содержит значение "OK" tr # не четные элементы tr # четные элементы p/text() # второй текстовый узел

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

Указывает на фильтрацию элементов

Input[@type=text] # атрибуты задаются с префиксом @ input[@class="OK"] # p # параграфы без атрибутов *[@style] # все элементы с атрибутом style a[. = "OK"] # ссылки со значением "OK" a/@id # идентификаторы ссылок a/@* # все атрибуты ссылок a[@id and @rel] # ссылки, которые содержат атрибуты id и rel a[@id][@rel] # то же самое a # ссылки содержат элемент или

Функции

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

Name() # возвращает имя элемента string(val) string(a/@id) # получить значение атрибута substring(val, from, to) substring(@id, 1, 6) # вырезать часть строки substring-after(val, from) substring-after(@id, "FROM") substring-before string-length() # возвращает число символов в строке count() # возвращает количество элементов concat() normalize-space() # аналог trim, удаляет пробелы Пример: starts-with() contains() translate("bar","abc","ABC") # BAr

Математика

//p[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ] //tr position() # div # деление mod # остаток от деления ceiling() # минимальное целое floor() # максимальное целое round() sum()

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

(table/tbody/tr) # последняя строка из всех таблиц (//h1|//h2) # заголовок первого или второго уровня, который содержит "Text"

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

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

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

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

Напоминание Отправить письмо! Re: Напоминание Письмо отправлено

Выбор узлов

Чтобы выбрать узлы в XML документе, 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 Выбирает первый элемент note, который является прямым потомком элемента messages.
Примечание : В IE 5,6,7,8,9 первым узлом будет , однако согласно W3C это должен быть . Чтобы решить эту проблему в IE, нужно установить опцию SelectionLanguage в значение XPath.
В JavaScript: xml.setProperty("SelectionLanguage","XPath");
/messages/note Выбирает последний элемент note, который является прямым потомком элемента messages.
/messages/note Выбирает предпоследний элемент note, который является прямым потомком элемента messages.
/messages/note Выбирает все элементы heading, у которых есть атрибут date
//heading[@date="10/01/2008"] Выбирает все элементы heading, у которых есть атрибут date со значением "10/01/2008"

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

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

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

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

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

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


(предок) содержит всех предков контекстного узла, включая родителей, дедушек, прадедушек и т.д. Эта ось всегда содержит корневой узел - если только контекстным узлом не является сам корневой узел.

Взгляните на листинг 7.3, в котором при помощи оси

осуществляется поиск имен (хранимых в элементе ) всех предков элементов . Листинг 7.3. Применение оси ancestor
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Вот результат применения этой таблицы стилей к

:

Применение оси ancestor-or-self

содержит всех предков контекстного узла, а также сам контекстный узел. Это означает, помимо прочего, что такая ось всегда содержит корневой узел.

В листинге 7.4 добавлены атрибуты

со значением «Steve» в весь документ. Листинг 7.4. planets.xml с атрибутами AUTHOR
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
1
2107
1
128.4

Предположим теперь, что я хочу перечислить по имени всех предков элементов

, имеющих атрибут , а также текущий элемент , если у него есть атрибут . Это можно сделать при помощи оси и функции (листинг 7.5). Листинг 7.5. Применение оси ancestor-or-self
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Вот результат; показаны выбранные предки всех трех элементов

, включая сам элемент , при условии, что у него имеется атрибут :

Применение оси descendant

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

В следующем примере (листинг 7.6) демонстрируется работа с этой осью. На этот раз я хочу добавить примечание к элементу

Меркурия:
(Извините, но Меркурий взорвался и больше не доступен.). Чтобы найти Меркурий, мне достаточно только проверить, имеет ли какой-либо потомок элемента строковое значение «», что я сделаю при помощи выражения XPath внутри предиката выбора. Листинг 7.6. Применение оси descendant
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Sorry. Mercury has blown up and is no longer available.

Вот результирующий документ, дополненный новым элементом

только для Меркурия:
.0553
58.65
1516
.983
43.4
Sorry, Mercury has blown up and is no longer available.
.815
116.75
3716
.943
66.8

Применение оси descendant-or-self

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

В следующем примере (листинг 7.7) демонстрируется работа с осью. В этом случае я создал упрощенную таблицу стилей (подробнее об упрощенных таблицах стилей см. главу 2), которая обрабатывает все элементы с использованием потомков, генерируя уже знакомую нам HTML-таблицу данных о планетах.

Листинг 7.7. Применение оси descendant-or-self

Вот и все. Я применил здесь упрощенную таблицу стилей, чтобы подчеркнуть, что при помощи таких осей потомков, как

или , вы можете автоматически обрабатывать все выбираемые узлы, во многом аналогично тому, как это делают элементы или .

Применение оси following

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

В этом примере (листинг 7.8) я выбираю каждый элемент И копирую все последующие элементы в результирующий документ.

Листинг 7.8. Применение оси following
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Меркурия, он копирует все последующие элементы - то есть Венеру, затем всех потомков Венеры, далее Землю и затем всех потомков Земли. После этого он выбирает элемент Венеры и копирует все следующие элементы, то есть Землю и всех потомков Земли:
.815
116.75
3716
.943
66.8
.815
116.75
3716
.943
66.8
1
2107
1
128.4
1
2107
1
128.4
1
2107
1
128.4
1
2107
1
128.4

С другой стороны, при использовании оси

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

Применение оси following-sibling

содержит всех последующих братьев контекстного узла.

Например, я могу выбрать каждый элемент

и скопировать в результирующий документ все узлы в оси следующим образом (листинг 7.9). Листинг 7.9. Применение оси following-sibling
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

При этом сначала копируются два узла-брата, следующие за Меркурием (Венера и Земля), затем копируется следующий узел-брат Венеры, Земля. У самой Земли нет следующих за ней братьев, поэтому результат выглядит так:

.815
116.75
3716
.943
66.8
1
2107
1
128.4
1
2107
1
128.4

Применение оси namespace

содержит узлы пространств имен контекстного узла. Заметьте, что эта ось пуста, если контекстным узлом не является элемент. У элемента присутствует узел пространства имен для:

Каждого атрибута элемента, чье имя начинается с «xmlns:»;

Каждого атрибута элемента-предка, чье имя начинается с «xmlns:» (конечно, если сам элемент или ближайший предок не объявит пространство имен заново);

Атрибута

, если элемент или предок имеет атрибут .

В следующем примере (листинг 7.10) я хочу отобразить пространство имен элемента

в результирующем документе, и в исходном документе я присвоил пространству имен значение «http://www.starpowder.com». Листинг 7.10. planets.xml с объявлением пространства имен
.0553
58.65
1516
.983
43.4

Вот таблица стилей (листинг 7.11), в которой я проверяю пространства имен, используемые в элементе

. Листинг 7.11. Применение оси namespace в planets.xml
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

А вот результирующий документ (заметьте, что вид документа может меняться в зависимости от процессора XSLT):

Применение оси parent

Ось parent (родитель) содержит родителя (и только родителя) контекстного узла, если таковой имеется.

Предположим, что я хочу изменить содержимое элемента Земли

на «>> (Масса Земли принимается за 1). В следующем шаблоне (листинг 7.12) для этого проверяется, содержит ли родитель элемента элемент со строковым значением «Earth». Листинг 7.12. Применение оси parent
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

The mass of Earth is set to 1.

И вот результат:

.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
66.8
The mass of Earth is set to 1.
2107
1
128.4

Применение оси preceding

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

Пусть, например, мне нужно задать для содержимого элемента

текст «» (Эта планета расположена дальше от Солнца, чем Меркурий.), если рассматриваемая планета действительно дальше от Солнца, чем Меркурий. Один из способов сделать это - проверить, расположен ли Меркурий перед рассматриваемой планетой в соответствии с установленным в документе порядком, при помощи оси (листинг 7.13). Листинг 7.13. Применение оси preceding
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
This planet is farther from the Sun than Mercury.

Если текущая планета расположена после Меркурия, я могу вставить сообщение в ее элемент

. Результат следующий:
.0553
58.65
1516
.983
43.4
.815
116.75
3716
.943
This planet is farther from the Sun than Mercury.
1
2107
1
This planet is farther from the Sun than Mercury.

Применение оси preceding-sibling

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

Что, если, например, вам нужно создать шаблон, который будет выбирать только элементы

в элементе Меркурия? Для этого можно проверить, существуют ли братья, предшествующие элементу , которые являются элементами со строковым значением «». Если применить ось (листинг 7.14), поиск будет ограничен текущим элементом , что означает, что Меркурий не будет выбран, если вы только не находитесь в нужном элементе . Листинг 7.14. Применение оси preceding-sibling
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

А вот результат:

.0553
58.65
1516
.983
This is the planet Mercury, closest to the Sun.
.815
116.75
3716
.943
66.8
1
2107
1
128.4

Применение оси self

содержит только контекстный узел. В соответствии с одним из сокращений XPath, как мы увидим дальше, вместо «» можно использовать «.».

Эту ось полезно иметь в виду, поскольку, как вы помните из главы 4, если не задать ось, осью по умолчанию будет

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

В следующем примере я объединяю шаблоны для элементов

и в один шаблон. Поскольку у этих элементов разный формат, я должен обращаться с ними по-разному внутри одного и того же шаблона (что можно сделать проверкой значений оси , которая возвращает непустой набор узлов, если контекстным, узлом является элемент , и , возвращающей непустой набор узлов, если контекстным узлом является элемент ):

На этом мы завершаем рассмотрение новых осей XPath. Давайте перейдем к примерам.

Примеры путей расположения

Мы изучили достаточно теории путей расположения. Но, понятно, лучше всего осваивать этот материал на примерах, поэтому я привожу следующий список примеров путей расположения (сокращенные варианты рассматриваются после этого списка):

. Возвращает дочерние элементы контекстного узла; . Возвращает все дочерние текстовые узлы контекстного узла; . Возвращает всех детей контекстного узла; . Возвращает атрибут контекстного узла; . Возвращает все элементы-потомки контекстного узла; . Возвращает всех предков контекстного узла; . Возвращает предков контекстного узла. Если контекстным узлом тоже является , возвращает также контекстный узел; . Возвращает элементы-потомки контекстного узла. Если контекстным узлом тоже является , возвращает также контекстный узел; . Возвращает контекстный узел, если им является элемент ;
child::PLANET/descendant::NAME
. Возвращает элементы-потомки дочерних элементов контекстного узла; . Возвращает всех внуков контекстного узла; . Возвращает корневой узел; . Возвращает все элементы в документе;
/descendant::PLANET/child::NAME
. Возвращает все элементы с родителем в документе; . Возвращает третьего ребенка контекстного узла;
child::PLANET
. Возвращает последнего ребенка контекстного узла;
/descendant::PLANET
. Возвращает третий элемент в документе;
child::PLANETS/child::PLANET/child::NAME
. Возвращает третий элемент четвертого элемента элемента ; . Возвращает всех детей контекстного узла после первых трех;
preceding-sibling::NAME
. Возвращает второй предыдущий элемент-брат контекстного узла;
child::*
. Возвращает детей и контекстного узла.
child::*
. Возвращает последнего ребенка или контекстного узла.

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

; возвращает детей контекстного узла, у которых есть дети с текстом, равным «Venus»; возвращает всех детей контекстного узла, у которых есть атрибут со значением «»; возвращает шестого ребенка контекстного узла, только если у этого ребенка есть атрибут со значением «days». Можно также написать ; возвращает всех детей контекстного узла, у которых есть атрибут и атрибут ;
//PLANET
" выбирает все элементы , значение которых отлично от значения любого предшествующего элемента ; выбирает любой элемент , который является первым ребенком своего родителя; выбирает первых пятерых детей контекстного узла, у которых есть атрибут .

Проверка выражений XPath

В пакет Xalan входит удобная программа-пример, ApplyXPath.java, позволяющая применить выражение XPath к документу и посмотреть на результат, что очень помогает при тестировании. Для запуска этого примера вам нужно будет скомпилировать

в при помощи утилиты java.exe, входящей в поставку Java.

В качестве примера я применю выражение XPath «

» к при помощи . Ниже показан результат, отображающий все элементы , дочерние по отношению к элементам (теги добавлены программой ApplyXPath):
%java ApplyXPath planets.xml PLANET/NAME
MercuryVenusEarth

XPath 2.0

XPath находится в стадии обновления, и в него включаются средства поддержки XSLT 2.0 (см. www.w3.org/TR/xpath20req). Задачи XPath 2.0 следующие:

Упрощение операций с содержимым типов, поддерживаемых схемой XML;

Упрощение операций со строковым содержимым;

Поддержка соответствующих стандартов XML;

Улучшение удобства использования;

Улучшение функциональной совместимости;

Улучшение поддержки международных языковых средств;

Сохранение обратной совместимости;

Повышенная эффективность процессора.

Следующий список дает обзор требований XPath. Главные пункты - поддержка схемы XML и регулярных выражений, что дает средства работы со строками и поиска в строках. (Дополнительную информацию о регулярных выражениях можно почерпнуть по адресу http://www.perldoc.com/perl5.6/pod/perlre.html.) В соответствии с W3C, XPath 2.0:

Должен поддерживать архитектуру XML W3C, хорошо взаимодействуя с другими стандартами в семействе XML;

Должен выражать свою модель данных в терминах информационного множества (infoset) XML;

Должен предоставлять общий ключевой синтаксис для XSLT 2.0 и XML Query language 1.0;

Должен поддерживать явное сравнение «

» или «» и синтаксис равенства;

Должен расширять множество функций агрегации (например, пользователи XSLT часто требовали добавить функции

и );

Должен сохранять обратную совместимость с XPath 1.0;

Должен предоставлять функции пересечения и разности то есть - XPath 1.0 поддерживает объединение двух наборов узлов, и к этому должны быть добавлены функции пересечения и разности;

Должен поддерживать операцию унарного плюса (поскольку в схеме XML у десятичных чисел может присутствовать лидирующий плюс);

Должен улучшать удобство использования;

Должен снизить ограничения на шаги расположения;

Должен реализовывать условную операцию, оперирующую тремя выражениями - выражением 1 (логическая операция), выражением 2 и выражением 3. Если выражение 1 принимает значение «истина», должно вычисляться выражение 2, а если выражение 1 принимает значение «ложь», должно вычисляться выражение 3;

Должен определять последовательный синтаксис для подвыражений, обрабатывающих коллекции элементов;

Должен поддерживать дополнительные строковые функции. Например, W3C рассматривает вопрос добавления средств для замены в строках, заполнения символами и преобразований регистра;

Должен поддерживать функции агрегации при применении к коллекциям. Например, некоторым пользователям XPath 1.0 требовалось применить такую функцию агрегации, как

, к значениям выражений, примененных к наборам узлов;

Должен поддерживать регулярные выражения для поиска в строках с использованием нотации регулярных выражений, установленной в схеме XML;

Должен поддерживать элементарные типы данных схемы XML. То есть в дополнение к типам, поддерживаемым моделью данных XPath 1.0, - строке, числу, логическому значению и набору узлов - модель данных XPath 2.0 должна поддерживать элементарные типы данных схемы XML;

Должен поддерживать представления чисел с плавающей точкой одинарной и двойной точности, поддерживаемые схемой XML, которая использует научную нотацию;

Должен определять подходящий набор функций для работы пользователя с элементарными типами данных схемы XML;

Должен добавлять в XPath тип данных «список» (поскольку схема XML позволяет определять простые типы, унаследованные от списка);

Должен поддерживать доступ к значениям простых типов элементов и атрибутов. Поскольку схемы XML представляют много новых типов, XPath 2.0 должен поддерживать доступ к собственному, простого типа, значению элемента или атрибута;

Должен определять поведение операторов для нулевых аргументов;

Должен иметь средства для выбора элементов или атрибутов на основе явного типа схемы XML;

Должен иметь средства для выбора элементов или атрибутов на основе иерархии типов схемы XML;

Должен иметь средства для выбора элементов на основе групп подстановки схемы XML;

Должен поддерживать средства поиска, основанные на уникальных ограничениях и ключах схемы.

Хотя мы подошли к концу главы, о XPath сказано еще не все. Тема будет продолжена в следующей главе, в которой мы более внимательно рассмотрим доступные в XPath функции и функции, уже встроенные в XSLT.


Компьютерный урок

© Copyright 2024,
tat-aikido.ru -Компьютерный урок

  • Рубрики
  • Windows
  • Компьютер
  • Программы
  • Фотошоп
  • Windows
  • Компьютер
  • Программы
  • Фотошоп