XPath
До сих пор мы имели дело с потомками и атрибутами. Однако в XML-дерева существуют другие разделы. Кроме движения вверх и вниз м родителями и потомками, существуют многочисленные другие оторым мы можем путешествовать.
Пути, по которым можно двигаться в разных направлениях, различным осям (axes). В XPath определено 13 осей, которые можно выражениях XPath посредством указания имени оси, за которым дует ::, а затем имя узла. Представим себе следующую диаграмму:
Наконец, существует функция translate (). С объяснением этой функции придется повозиться.
Когда я был помоложе, то вместе со своими друзьями любил изобретать всякие секретные коды, чтобы мы могли посылать друг другу записки, которые никто, кроме нас, не смог бы прочесть. Естественно, самым простым кодом в мире считался следующий:
ABCDEFGHIJKLMNOPQRSTUVWXYZ ZYXWVUTSRQPONMLKJIHGFEDCBA
Поскольку XML на самом деле представляет из себя сплошной текст, в XPath существует несколько функций, предназначенных для работы со строками. Мы рассмотрим следующие функции:
■ string ()
■ string-length()
■ concatO
■ contains()
■ starts-with()
■ substring()
■ substring-after()
■ substring-before()
■ translate))
string
Существует несколько функций XPath, которые можно использовать для, выполнения логических операций. Мы рассмотрим следующие:
■ boolean()
■ not()
■ true()
■ False()
Логических значений всегда бывает только два: истина (true) или ложь (false), да или нет, включено или выключено, 1 или 0 и т.д.
boo/eon
Функция boolean () просто определяет, имеет ли выражение XPath значение true или false, по следующим правилам:
Для узлов, принадлежащих множеству узлов, существуют функции, определить или выявить позиции таких узлов внутри множества. Вот функции: Функция position () позволяет получить узел по номеру его позиции, в рой он следует в документе. Например, если есть следующий XML:то можно задать шаблон, который будет соответствовать всем элементам :Это будет соответствовать каждому элементу в данном конкретном документе.
Функции для работы с узлами используются для работы с узлами в целом. Они могут возвращать информацию об узле или определенные типы узлов. Сейчас мы рассмотрим функции: Функция name () используется для получения имени узла. Например, name (.) вернет имя контекстного узла. Контекстный узел является значением по умолчанию, использующимся, если в функции name () не задано никакого узла, т.е. " name () " — это то же самое, что и " name (.) ".
Для того чтобы сделать XPath еще более могучим и полезным, в него несколько функций, которые можно использовать внутри . Некоторые из них используются для возвращения узлов или мн узлов, которые нельзя извлечь с помощью обычных связей типа мок/родитель и элемент/атрибут. Существуют также функции для раб строками и числами, которые могут быть использованы как для информации из исходного документа, так и для форматирования "
Функции легко отличить, так как они оканчиваются круглыми скоб Некоторым функциям для работы необходима информация, которая параметров помещается внутри скобок.
Как и в синтаксисе языка XML, в выражениях XPath можно использовать двойные, так одинарные кавычки. Однако лучше всего взять за правило и использовать какие-то одни из них, желательно не те, которые обычно для атрибутов, т.е., если вы обычно используете двойные кавычки Я атрибутов, используйте одиночные кавычки в выражениях XPath. Это наш то проще, так как можно будет обычным способом вставлять эти XPath в атрибуты.
Предположим, что для значений атрибутов всегда используются кавычки:
Тогда, вероятно, имеет смысл использовать одиночные.
Более сложные выражения XPath, вроде такого:
/order [Snumber = '312597']/item/part-number [Swarehouse = 'Warehouse 11
может оказаться проще разбить на несколько шагов. Сначала можно задать выражение XPath, ведущее к узлу, который мы хотим выбрать, и лишь потом доб лять всякие фильтры. В таком случае можно сначала записать выражение XPai
/order/item/part-number
Затем можно сузить поиск, задав выбор только тех элементов
Теперь, когда мы умеем адресоваться к отдельным частям нашего XML-документа, можем ли мы получить что-либо более определенное? Несомненно. Мы можем не только описывать местонахождение узлов, занимающих в документе определенное положение, но и искать узлы по совпадению значений или по выполнению каких-либо других условий. Так, например, вместо извлечения всех элементов из исходного дерева можно извлечь лишь элементы , содержащие текст "John".
Меню
- XML в браузере: каскадные таблицы стилей
- XML-декларация
- XPath
- XSLT и XPath
- Анализ XML
- Атрибуты
- Внутреннее устройство XSLT
- Внутреннее устройство XSLT
- Зачем нам нужны таблицы стилей
- Императивное программирование против декларативного программирования
- Инструкции обработки
- Интерфейсы DOM
- Каскадные таблицы стилей и XML
- Комментарии
- Недопустимые символы в PCDATA
- Правильно оформленный XML
- Пустые элементы
- Совместное использование XSLT и CSS
- Таблицы стилей для звукового вывода
- Таблицы стилей и HTML
- Теги, текст и элементы
- Что такое DOM
- Что такое XSL
- Элементы XSLT и их использование
- Ядро DOM в деталях
