| Каталог | Индекс раздела |
©IBM deweloperWork
© А.С.Деревянко (перевод)
Этот учебник рассматривает большинство аспектов XML Path Language или XPath. Он предназначен для людей, которые на знают XPath или хотят освежить свои знания. Если вы собираетесь использовать XSLT, вы должны сначала обратиться к этому учебнику. Вы изучите:
XPath является стандартом W3C. Этот учебник фокусируется на версии 1.0. За информацией о грядущей XPath 2.0 обратитесь к Заключению.
Этот учебник предполагает базовые знания об XML. Например, вы должны знать, что такое элементы, атрибуты и значения. Если вы не знакомы с этим, я рекомендую вам обратиться к учебнику "Введение в XML", ссылка на который есть в Ресурсах.
Вам также понадобится текстовый редактор и Web-браузер. Хотя это и не является обязательным условием, может оказаться полезным иметь XML-редактор, если в него будет включен вычислитель Xpath, что позволит вам проверять используемые здесь выражение XPath.
Ниже перечисляются технологии, упоминаемые в этом учебнике. Пропустите их, если вы уже знакомы с относящимися к XML технологиями. Все эти технологии определяются спецификациями W3C.
Bertrand Portier инженер по программному обеспечению, работающий в IBM Software Group Services. Он работает с пользователями IBM WebSphere, обеспечивая решения для задач их бизнеса. До этого он работал разработчиком в области Web-сервисов. Вы можете связаться с ним по адресу portier@uk.ibm.com.
В этом учебнике вы будете изучать XPath на примере написания презентационного уровня приложения сайта аукциона. Вы будете задавать выражения XPath в таблицах XSLT, используемых для презентации XML-документов, представляющих лоты аукциона. Все файлы, используемые в этом учебнике, находятся zip-файле, x-xpathTutorial.zip, включая:
Список лотов аукциона имеет только один корневой элемент с именем Группа Атрибут Если вы хотите узнать больше об XML Schema, см. ссылки на статьи и учебники на developerWorks в Ресурсы.
Это обеспечивает формат данных, а как же насчет презентации? Как вы определяете, какая таблица стилей XSLT используется для отображения этого XML-документа в Web-браузере? Это определяется второй строкой XML-документа:
Здесь я устанавливаю, что должна использоваться таблица стилей Информация, которая отображается, когда шаблон активируется, определяется его атрибутами В каждом разделе (Маршруты местоположения, Выражения, Библиотека функций), вы будете модифицировать До сих пор вы должны были просматривать файлы в текстовом или XML-редакторе. Теперь вы можете открыть Язык XML Path (XPath) является набором синтаксических и семантических правил для ссылок на части XML-документов. XPath предназначен для использования другими спецификациями, такими как XSL Transformations (XSLT) и XML Pointer Language (XPointer). Чтобы помочь вам понять, что такое XPath, я начну с того, что покажу примеры, относящиеся к Выражения XPath идентифицируют набор узлов в XML-документе. Этот набор узлов содержит ноль или более узлов. Например, выражение XPath Выражение XPath XPath использует нотацию с прямой наклонной чертой ( Допустимые выражения XPath могут включать в себя предикаты. Предикаты содержат логические выражения, которые проверяются для каждого узла в контексте набора узлов. Если истина, узел сохраняется в наборе идентифицируемых узлов; иначе, узел отбрасывается. Предикаты полезны для сокращения результирующего набора. Например, следующее выражение XPath идентифицирует только вторую составляющую:
Выражения XPath могут ссылаться на атрибуты так же, как и на элементы в XML-документе. При ссылке на атрибут используется символ XPath также предоставляет функции, которые могут быть очень удобными. Я покажу это вам более подробно в разделе Библиотека функций, но немножко об этом скажем здесь. Выражение Xpath, приведенное ниже, идентифицирует элемент Проверьте приведенное выше выражение XPaths в вашем XML-редакторе: откройте Итак, теперь вы посвящены в XPath! До сих пор вы изучили, что XPath является языком для идентификации частей XML-документов. Вы увидели, как выглядит выражение XPath и как оно ссылается на элементы и атрибуты в XML-документах. Я также показал вам, как XPath обеспечивает функции для манипулирования данными. Однако, это только быстрый обзор; я буду обсуждать все эти вопросы более подробно - а также и другие аспекты XPath - в остальных разделах. Например, я исследую пространства имен XPath и специальные символы (такие, как XSLT, Xlink и XPointer являются стандартами W3C. XSLT и Xpath вместе сXSL Formatting Object (XSL-FO) составляют семейство спецификаций eXtensible Stylesheet Language (XSL). (Если вы хотите посмотреть эти спецификации, см. Ресурсы.)
Презентация: XSLT экстенсивно использует XPath для проверки соответствия - то есть, проверки того, соответствует ли узел данному шаблону. XSLT задает контекст, используемый XPath. Вы должны понимать Xpath, если вы хотите работать с XSLT. В разделе О примерах, используемых в этом учебнике вы видели, что таблица стилей Связывание: XLink предоставляет обобщение XML концепции гиперссылок HTML. XLink определяет синтаксис для элементов, вставляемых в XML-документы, чтобы связать ресурсы вместе и описать их отношения. Эти связи могут быть однонаправленными, как гиперссылки HTML, или более сложными. XLink использует XPointer для определения местонахождения ресурсов.
Указание: XPointer является расширением Xpath, которое обеспечивает адресацию в XML-документах и их внутренних частях. XPointer обобщает представление узлов XPath концепциями местоположений, точек и рангов XPointer. XPointer также задает контекст, используемый при вычислениях XPath и предоставляет дополнительные функции, которых нет в XPath.
XPath существенен для всех упомянутых выше спецификаций. Фастически, спецификацияe XPath явным образом устанавливает, что XPath разработан для использования в XSLT и XPointer.
Вот сводка технологий XML, о которых я говорил до сих пор:
XPath выглядит, как XML-документ, как дерево узлов. Узлы могут быть разных типов, таких как узлы элементов или узлы атрибутов. Некоторые типы узлов имеют имена, которые состоят из URI пространства имен XML, возможно не определенного, и локальной части. Например, на рисунке ниже показано представление в XPath Специальным типом узла является корневой узел. XML-документ содержит только один такой узел и он является корнем дерева, содержащего весь XML-документ. Заметьте, что корневой узел содержит корневой элемент, а также любые узлы инструкций обработки, объявлений или комментариев, которые появляются до или после корневого элемента. В примере дочерними узлами корневого узла являются:
и
Не существует типа узла для XML-декларации (такой, как XPath вычисляет выражения относительно контекста. Этот контекст обычно задается приемами, расширяющими XPath, такими, как XSLT и XPointer. Контекст XPath включает в себя узел контекста, размер контекста, позицию контекста и другие данные контекста. С точки зрения контекста, здесь наиболее интересен узел контекста. Если узел контекста является корневым узлом, В XSLT значения атрибутов Маршруты местоположения является наиболее полезным и широко используемым свойством XPath. Маршрут местоположения является специализацией выражения XPath (описанного в Выражения). Маршрут местоположения идентифицирует набор узлов XPath относительно его контекста. XPath определяет два синтаксиса: the сокращенный синтаксис и несокращенный синтаксис.
В этом учебнике я рассказываю только о сокращенном синтаксисе, потому что он наиболее широко используется; несокращенный синтаксис также является более сложным. Если вы интересуетесь несокращенным синтаксисом, посмотрите спецификацию XPath 1.0 (см. Ресурсы).
Есть два типа маршрутов местоположения: относительный и абсолютный.
Относительный маршрут местоположения - это последовательность местоположений, разделенных Этот маршрут местоположения состоит из двух шагов установки местоположения: первый, При абсолютном маршруте местоположенияs (маршруты местоположения, которые начинаются с Сокращенный синтаксис предоставляет набор символов (большинство из них мы показывали в Обзор XPath). Я сейчас перечислю наиболее широко используемые символы и дам примеры относительно корневого узла @ используется для ссылки на атрибуты. Например, the маршрут местоположения * используется для ссылки на все элементы, которые являются дочерними для узла контекста. [] могут также использоваться для ссылки на определенный элемент в упорядоченной последовательности. Например, // используется для ссылки на все дочерними элементы узла контекста. Например, . используется для ссылки на сам узел контекста. Например, .. используется для ссылки на родительский узел узал контекста. Например, Предикаты используются в маршрутах местоположения для фильтрации текущего набора узлов. Предикат содержит булевское выражение (или выражение, которое может быть преобразовано в булевское). Каждый член текущего набора узлов проверяется по булевскому выражению и сохраняется, если выражение истинно; иначе он выбрасывается. Предикат заключается в квадратные скобки, При вычислении все элементы Предикаты могут использовать также операции отношений Теперь, когда я объяснил, что такое маршруты местоположения, вашей задачей будет модифицировать Примечание: Вам нужно заменить значение атрибута Решением этого является Маршруты размещения являются подмножеством более общих выражений XPath. Выражение не только ссылается на набор узлов (маршруты местоположения), но может также возвращать булевское значение, число или строку.
Булевские выражения могут иметь одно из двух значений: истина или ложь.
XPath определяет операторы XPath определяет следующие операторы:
Например, булевское выражение Оператор Когда выражение XPath содержится в XML-документе, должны быть выдержаны правила правильного форматирования XML 1.0, и любые символы Если операнды булевского выражения имеют неодинаковый тип (наборы узлов, числа, строки), происходит преобразование. Подробности см. в спецификации XPath 1.0.
Числа в XPath - это 64-бтиные числа двойной точности с поавающей точкой. Числа XPath включают в себя значение "Not-a-Number" Числовые операторы, предоставляемые XPath такие: Числовые операторы при необходимости преобразуют операнды в числа, как если бы они использовали функцию Примечание: Перед оператором вычитания ( Вот несколько примеров числовых выражений XPath:
Строки в XPath являются последовательностями символов, допустимых в XML 1.0 (Unicode) - например, Строки в XPath заключаются в кавычки ( XPath предоставляет полезные функции для работы со строками, описанные в разделе Библиотека функций.
Теперь, когда я объяснил вам выражения XPath, вашей задачей будет модификация Примечание: Решение находится в XPath определяет набор функций, называемый базовой библиотекой функций . Каждая функция определяется тремя характеристиками:
Вы можете найти полезным применение функций в предикатах или выражениях. Другие спецификации, такие как XSLT, расширяют этот набор функций. Функции подразделяются на четыре группы, которые я обсуждаю в оставшейся части этого раздела:
Функции набора узлов обеспечивают информацию о наборе узлов (одном узле или более). В число полезных функций набора узлов входят:
XPath также определяет еще три функции, относящиеся к именам узлов и пространствам имен:
Подробности см. в разделе 4.1 спецификации XPath 1.0.
При помощи строковых функций вы можете манипулировать строками. В число полезных строковых функции входят:
Другими строковыми функциями XPath являются: Булевские функции используются для преобразования объекта или строки в истину или ложь или непосредственного получения значений истина или ложь. Булевские функции такие:
Числовые функции XPath возвращают числа. Они такие:
Теперь, когда я объяснил функции XPath, вашей задачей будет модифицировать Примечание: Такие составляющие будут содержать строку XPath 2.0 является надмножеством XPath 1.0 и сейчас является Рабочим Проектом W3C. Две рабочие группы W3C работают над версией XPath 2.0: рабочая группа XML Query и рабочая группа XSL. XPath 2.0 должен быть более мощным и более надежным, поскольку он поддерживает расширенный набор типов данных. Это потому, что значения XPath 2.0 используют типы данных XML Schema, а не просто строки, числа и булевские значения. XPath 2.0 является обратно-совместимым, так что выражения 1.0 ведут себя точно так же в 2.0, кроме исключений, перечисленных в спецификации.
Дополнительную информацию о XPath 2.0 см. в Ресурсах.
В этом учебнике вы узнали, что XPath является языком, который использвется для адресации частей XML-документов. Вы увидели, как XPath соотносится с другими технологиями XML, такими как XSLT и XPointer. Вы увидели, что такое выражения XPath, включая особый случай выражений, называемых маршрутами местоположения. Вы также получили обзор библиотеки функций XPath и новых свойств грядущей XPath 2.0.
Следующие ресурсы могут оказаться полезными для вас:
Предварительные требования
Технологии, относящиеся к XML
Об авторе
2. О примерах, используемых в этом учебнике
Обзор
XPath/AuctionItemList.xsd - документ XML Schema, который определяет формат данных для лотов аукциона.
XPath/AuctionItemList.xml - XML_файл, который содержит список лотов аукциона; это данные для примера.
XPath/AuctionItemSummary-Base.xsl - таблица стилей XSLT, которая определяет, что будет отображать Web-браузер, когда он загрузит AuctionItemList.xml; она содержит правила презентации данных.
XPath/AuctionItemSummary-Section5.xsl -решение для раздела Маршруты местоположения.
XPath/AuctionItemSummary-Section6.xsl решение для раздела Выражения.
XPath/AuctionItemSummary-Section7.xsl - решение для раздела Библиотека функций.
AuctionItemList.xsd
AuctionItemList.xsd содержит бизнес-правила для лотов аукциона и данных списка лотов, описанных на языке XML Schema:
list типа auctionItemList.
auctionItemList состоит из нуля или более элементов item типа auctionItem.
auctionItem состоит из пяти элементов (bidIncrement, currentPrice типа price, endOfAuction, description и sellerId) и одной группы атрибутов типа itemAttributes.
price является положительным двухзначным десятичным значением и должно иметь связанный с ним атрибут currency типа customCurrency.
customCurrency должен иметь одно из значений: USD, GBP или EUR.
itemAttributes должна содержать один строковый атрибут type, один строковый атрибут id и один булевский атрибут private, который по умолчанию является false.
type должен иметь одно из значений: Unknown, Traditional, BidOnly, FixedPrice или IndividualOffer.
AuctionItemList.xml
AuctionItemList.xml соответствует XML schema, определенной в defined in AuctionItemList.xsd, и содержит список типа auctionItemList. Этот список содержит семь составляющих. Атрибут xsi:schemaLocation корневого элемента списка показывает, of the list root element indicates that this XML-документ должен соответствовать схеме AuctionItemList.xsd.
<?xml-stylesheet type="text/xsl" href="AuctionItemSummary-Base.xsl"?>
AuctionItemSummary-Base.xsl. Сами данные должны быть выбраны так, что может быть продемонстрировано применение Xpath, чтобы показать определенные свойства данных. Если с XML-документом AuctionItemList.xml не связывается таблица стилей, то Web-браузер просто показывает содержимое XML, оно выгладит так:
AuctionItemSummary-Base.xsl
AuctionItemSummary-Base.xsl является таблицей стилей XSLT, которая определяет правила, применяемые процессором XSLT для отображения XML-документов AuctionItemList. Она использует выражения XPath для нахождения информации в XML-документе и отображения ее в таблице HTML. Я буду более подробно рассматривать использование XPath в XSLT в разделе Обзор Xpath. Здесь я кратко опишу содержимое AuctionItemSummary-Base.xsl. Она определяет шаблоны, которые активируются при обработке XML-документов. Какой шаблон активируется, зависит от выражения Xpath, записанного в атрибуте match этого элемента template. Например, следующие фрагменты, взятые из AuctionItemSummary-Base.xsl, являются выражениями XPath:
"/"
"list
"item"
value-of элемента select. Значения этих атрибутов также являются выражениями XPath. Например:
"description"
"currentPrice"
"@type"
"@private"
AuctionItemSummary-Base.xsl, чтобы отображать информацию разными способами.
AuctionItemList.xml в вашем Web-браузере, чтобы увидеть выход, сгенерированный процессором XSLT на основе таблицы стилей. Вы должны увидеть что-то вроде:
3. Обзор XPath
Что такое XPath?
AuctionItemList.xml.
/list, примененное к AuctionItemList.xml, идентифицирует один-единственный узел - корневой элемент list.
/list/item идентифицирует все элементы item.
/), аналогичную shell в UNIX. Поэтому XPath может применяться в Uniformed Resource Identifier (URI), таких как URL. Именно отсюда и пришел XPath: использование нотации маршрута, как в URL.
/list/item[currentPrice>1000.0]
@. Например, следующее выражение XPath идентифицирует элементы currentPrice, в которых атрибуты currency содержат значение EUR:
/list/item/currentPrice[@currency="EUR"]
description составляющей, которая имеет type - "IndividualOffer" (и имеет значение 2MP digital camera):
/list/item[starts-with(@type,"Ind")]/description
AuctionItemList.xml и введите выражение в вычислитель Xpath, чтобы увидеть, какие узлы выбираются.
// и *) и покажу вам, что не все выражения Xpath имеют форму, показанную в вышеприведенных примерах (называемую сокращенными маршрутами местоположения).
XSLT, Xlink и XPointer
AuctionItemSummary-Base.xsl содержит выражения XPath. Эти выражения XPath используются XSLT для нахождения в исходном документе элементов, которые соответствуют критериям, а также для отображения информации в результирующий документ. XSLT также использует функции XPath для выполнения арифметических операций и манипуляций со строками.
4. Терминология XPath
Что такое узел XPath?
AuctionItemList.xml как дерева узлов:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="AuctionItemSummary-Base.xsl"?>
<list ...>
<item ...>
...
</item>
<item ...>
...
</item>
...
</list>
<?xml version="1.0" encoding="UTF-8"?> ) или Document Type Definition (DTD). Следовательно, на такие сущности нельзя ссылаться в XPath.
Элементные узлы представляют каждый элемент в XML-документе. Узлы атрибутов принадлежат элементным узлам и представляют атрибуты в XML-документе. Однако, атрибуты, которые начинаются с xmlns:, представляются в XPath с узлами пространств имен. Другие типы узлов включают в себя текстовые узлы, узлы инструкций обработки и узлы комментариев.
Вне контекста?
list/item ссылается на семь элементов item в AuctionItemList.xml. Если узел контекста является другим узлом - например, первым элементом item -- list/item не ссылается на что-либо в XML-документе.
select являются выражениями XPath. Например, в AuctionItemSummary-Base.xsl элементы xsl:apply-templates и xsl:value-of имеют атрибуты select, значениями которых (выражениями XPath) являются, помимо прочего, list, item или itemId. В XSLT узлом контекста является текущий вычисляемый узел. Шаблоны XSLT могут быть активированы несколько раз для XML-документа и обеспечивать разные результаты. В AuctionItemList.xml первый и второй шаблоны (match="/" и match ="list", соответственно) активируются один раз, а третий шаблон (match="item") активируются семь раз (по одному разу на каждый элемент item). В первый раз, когда активируется шаблон "item", контекстным узлом является первый элемент item в XML-документе ("Miles Smiles album, CD") и, например, значением <xsl:value-of select="@id"/> является itemId0001. Когда шаблон XSLT активируется второй раз, контекстным узлом является второй элемент item ("Coltrane Blue Train" CD) и значением <xsl:value-of select="@id"/> является itemId0002. Заметьте, что я использовал /list/item/@id, а не @id для атрибута select, значение элемента xsl-value-of должно быть неопределенным.
5. Маршруты местоположения
Что такое маршрут местоположения?
/. Например:
list/item[currentPrice<20.0]
list, выбирает набор узлов относительно контекстного узла; второй, item[currentPrice<20.0], выбирает набор узлов в подмножестве, идентифицированном первым шагом, и т.д., если есть еще узлы.
Абсолютный маршрут местоположения состоит из /, за которым, возможно, следует относительный маршрут местоположения, здесь / ссылается на корневой узел. Абсолютный маршрут местоположения является относительным маршрутом местоположения, вычисляемым в контексте корневого узла, например:
/list/item[currentPrice<20.0]
/) контекстный узел не принимается во внимание, так как маршрут всегда вычисляется от корневого узла.
Полезный синтаксис
AuctionItemList.xml, - то есть, узлом контекста будет корневой узел AuctionItemList.xml.
@currency идентифицирует атрибут currency. list/item[@private] идентифицирует элементы item с атрибутом private - то есть, все элементы item в AuctionItemList.xml.
@* используется для ссылки на все атрибуты узла контекста.
list/item[2] ссылается на второй элемент item. На самом деле это - предикат (описывается далее в Предикаты).
//item ссылается на все элементы item, а //list/item ссылается на все элементы item, которые имеют родителем list (то есть, все элементы item в примере).
. выбирает узел контекста, а .//item ссылается на все элементы item, которые являются дочерними для узла контекста.
../item ссылается на первый элемент item в контексте первого элемента bidIncrement.
Предикаты
[]. Посмотрим на следующий маршрут местоположения:
list/item/currentPrice[@currency="EUR"]
currentPrice в AuctionItemList.xml находятся в выбранном наборе узлов. Затем вычисляется предикат @currency="EUR" и элементы currentPrice, которые не содержат значения EUR, удаляются.
>, <, >=, <= и !=. Они могут также использовать булевские операторы, как вы увидите в разделе Выражения.
Лабораторная работа: Маршруты размещения
AuctionItemSummary-Base.xsl, чтобы обеспечить следующий вывод - таблицу, содержащую только составляющие, в которых валюта указана в долларах США:
select в шаблоне list на правильный маршрут местоположения. Используйте апостроф (') внутри строки, заключенной в кавычки ("). Я расскажу об этом подробнее в разделе Выражения.
AuctionItemSummary-Section5.xsl. Измените вторую строку AuctionItemList.xml, чтобы она ссылалась на AuctionItemSummary-Section5.xsl, и откройте AuctionItemList.xml в вашем Web-браузере.
6. Выражения
Булевские
and и or. Для and первым вычисляется левый операнд, если он ложь, то выражение возвращает ложь; иначе вычисляется правый операнд и определяет результат выражения. Для or вычисляется левый операнд; если он истина, то выражение возвращает истину; иначе вычисляется правый операнд и определяет результат выражения. Например, булевское выражение type="BidOnly" вычисляется в истину в контексте второго элемента item в AuctionItemList.xml.
= означает "равно"
!= означает "не равно"
< означает "меньше"
<= означает "меньше или равно"
> означает "больше"
>= означает "больше или равно"
bidIncrement != 10 возвращает истину в контексте первого элемента item в AuctionItemList.xml и ложь в контексте второго элемента item.
=, когда он применяется к узлам, проверяет, имеют ли узлы одно и то же значение, а не то, являются ли они одним и тем же узлом. Это может быть использовано при сравнении значений атрибутов. Например, item[@type = @private] выбирает составляющие, в которых атрибуты type и private имеют одно и то же значение.
< или <= должны быть представлены, как < и <= , соответственно. Например, выражение XPath bidIncrement < 5 является правильным в Xpointer, но должно быть записано, как bidIncrement < 5, если оно должно содержаться в документе XSLT.
Числа
NaN, положительную и отрицательную бесконечность и положительный и отрицательный нуль.
+ (сложение), - (вычитание), * (умножение), div (деление) и mod (остаток от деления).
number (описывается в разделе Библиотека функций).
-) должен быть пропуск, поскольку XML допускает символы "-" в строках.
Примечание: Звездочка (7 + 3 возвращает 10
7 - 3 возвращает 4
7 * 3 возвращает 21
7 div 3 возвращает 2.3333333333333335
7 mod 3 возвращает 1
*) может интерпретироваться, как символ-джокер или как символ умножения. XPath определяет лексические правила, позволяющий избежать двусмысленности (подробности см. в спецификации XPath 1.0). Но был введен новый оператор для символа деления, div, полтому что прямая косая черта (/) используется для разделения шагов определения местоположения.
Строки
Miles Smiles album, CD.
' или "). Если строка XPath содержится в XML-документи и содержит символы кавычек, вы должны использовать один из следующих двух вариантов:
' или ", соответственно. Например, description = 'New 256m "USB" MP3 player'.
'), если выражение заключено в двойные кавычки (") и наоборот. Например, 'New 356m "USB" MP3 player'.
Лабораторная работа: Выражения
AuctionItemSummary-Base.xsl таким образом, чтобы обеспечить следующий вывод - таблицу, содержащую все составляющие, для которых аукцион закончился в пределах часа:
endOfAuction является временем (в минутах), остающимся до конца аукциона. Вам нужно модифицировать тот же атрибут select, что и в разделе Маршруты местоположения.
AuctionItemSummary-Section6.xsl. Измените вторую строку AuctionItemList.xml, чтобы она ссылалась на AuctionItemSummary-Section6.xsl, и откройте AuctionItemList.xml в Web-браузере.
7. Библиотека функций
Библиотека функций
Функции набора узлов
last() - Возвращает число, называемое размером контекста , которое является числом узлов в данном контексте. Оно отличается от номера последнего узла.
position() - Возвращает число, называемое позицией контекста, которое является позицией текущего узла в наборе (списке) узлов в данном контексте. Например, вы можете проверить, имеете ли вы дело с последним узлом набора, при помощи выражения position()=last().
count(node-set) - Возвращает число узлов в наборе узлов-аргументе. Например, в контексте документа AuctionItemList.xml, count(//item) возвращает количество ≤лементов item, равное 7.
ID в DTD. Поскольку я не использую DTD в AuctionItemList.xml, для нашего примера результат всегда пустой. Id("ItemId0001") возвращает пустой результат.
local-name()
namespace-uri()
name()
String функции
string() - Преобразует аргумент - объект или контекстный узел - в строку. Допустимыми аргументами являются набор узлов, число, булевское значение или любой другой тип, но в последнем случае результат преобразования менее предсказуем. Рекомендуется при преобразовании числа в строку для представления пользователю использовать функцию XSLT format-number или элемент XSLT xsl:number.
concat() - Принимает в качестве аргументов две или более строки и возвращает их конкатенацию. Например, concat("Original ","recording ","Blue Train LP record") возвращает "Original recording Blue Train LP record".
starts-with() - Возвращает истину, если строка-первый аргумент начинается со строки-второго аргумента; иначе - ложь. Например, starts-with("Miles Smiles album, CD", "Miles") возвращает истину.
contains() - Возвращает истину, если строка-первый аргумент содержит строку-второй аргумент; иначе - ложь. Например, contains("Miles Smiles album, CD", "album") возвращает истину.
substring(), substring-before(), substring-after(), string-length(), normalize-space() и translate(). Подробности см. в разделе 4.2 спецификации XPath 1.0.
Булевские функции
boolean() - Возвращает преобразование в булевское значение объекта, переданного ей в качестве аргумента, в соответствии со следующими правилами: число является истиной, если оно отлично от нуля или NaN; набор узлов или строка являются истиной, если они не пустые. Другие типы или объекты преобразуются менее предсказуемым способом.
not() - Возвращает истину, если булевское значение, переданное в качестве аргумента, является ложью; иначе - возвращает ложь.
true() и false() - Возвращают истину и ложь соответственно. Эти функции полезны потому, что истина и ложь выглядят в XPath как нормальные строки, а не как булевские значения истины и лжи.
lang() - Возвращает истину, если язык контекстного узла тот же или является подъязыком заданного строкового аргумента; иначе - ложь. Язык контекстного узла определяется значением атрибута xml:lang. Например, lang("en") вернет ложь на любом узле дерева для AuctionItemList.xml, потому что атрибут xml:lang.
Числовые функции
number() - Преобразует необязательный объект-аргумент (или контекстный узел, если аргумент не задан) в число в соответствии со следующими правилами:
Другие типы или объекты преобразуются менее предсказуемым образом. Например, number("250") возвращает 250, а number("miles1965") возвращает NaN.
sum() - Возвращает сумму всех узлов в наборе узлов-аргументе после того, как к ним будет применена функция number().
floor() - Возвращает наибольшее целое, не большее числового аргумента. Например, floor(2.75) возвращает 2.
ceiling() - Возвращает наименьшее целое, не меньшее числового аргумента. Например, ceiling(2.75) возвращает 3.
round() - Возвращает целое число, которое является округлением числового аргумента. Например, round(2.75) возвращает 3.
Лабораторная работа: Библиотека функций
AuctionItemSummary-Base.xsl, чтобы получить следующий вывод - таблицу, содержащую только новые аукционные лоты:
New или NEW в их описании. Вам нужно модифицировать тот же атрибут select, что и в Маршруты местоположения и Выражения.
Решение для этого находится в AuctionItemSummary-Section7.xsl. Измените вторую строку AuctionItemList.xml, чтобы она указывала на AuctionItemSummary-Section7.xsl и откройте AuctionItemList.xml в вашем Web-браузере.
8.Заключение
XPath 2.0
Резюме
Ресурсы
| Каталог | Индекс раздела |