Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы====== XPATH ====== ===== Оси ===== Оси — это база языка XPath. Для некоторых осей существуют сокращённые обозначения. * child:: — содержит множество элементов-потомков (элементов, расположенных на один уровень ниже). Это название сокращается полностью, то есть его можно вовсе опускать. * descendant:: — содержит полное множество элементов-потомков (то есть, как ближайших элементов-потомков, так и всех их элементов-потомков). * descendant-or-self:: — содержит полное множество элементов-потомков и текущий элемент. Выражение /descendant-or-self::node()/ можно сокращать до //. С помощью этой оси, например, можно вторым шагом организовать отбор элементов с любого узла, а не только с корневого: достаточно первым шагом взять всех потомков корневого. Например, путь //span отберёт все узлы span документа, независимо от их положения в иерархии, взглянув как на имя корневого, так и на имена всех его дочерних элементов, на всю глубину их вложенности. * ancestor:: — содержит множество элементов-предков. * ancestor-or-self:: — содержит множество элементов-предков и текущий элемент. * parent:: — содержит элемент-предок на один уровень назад. Это обращение можно заменить на .. * self:: — содержит текущий элемент. Это обращение можно заменить на . * following:: — содержит множество элементов, расположенных ниже текущего элемента по дереву (на всех уровнях и слоях), исключая собственных потомков. * following-sibling:: — содержит множество братских элементов того же уровня, следующих за текущим слоем. * preceding:: — содержит множество элементов, расположенных выше текущего элемента по дереву (на всех уровнях и слоях), исключая множество собственных предков. * preceding-sibling:: — содержит множество братских элементов того же уровня, предшествующих текущему слою. * attribute:: — содержит множество атрибутов текущего элемента. Это обращение можно заменить на символ @ * space:: — содержит множество элементов, относящихся к тому или иному пространству имён (то есть присутствует атрибут xmlns). ===== Функции над множествами узлов ===== ^ |Функция| Описание^ |node-set| node()| Возвращает сам узел. Вместо этой функции часто используют заменитель *, но, в отличие от звёздочки, функция node() возвращает и текстовые узлы| |string| text() Возвращает узел, если он текстовый| |node-set| current()| Возвращает множество из одного элемента, который является текущим. Если мы делаем обработку множества с предикатами, то единственным способом дотянуться из этого предиката до текущего элемента будет данная функция| |number| position()| Возвращает позицию элемента в множестве элементов оси. Корректно работает только в цикле <xsl:for-each/>| |number| last()| Возвращает номер последнего элемента в множестве элементов оси. Корректно работает только в цикле <xsl:for-each/>| |number| count(node-set)| Возвращает количество элементов в node-set.| |string| name(node-set?)| Возвращает полное имя первого тега в множестве| |string| namespace-url(node-set?)| Возвращает ссылку на URL, определяющий пространство имён| |string| local-name(node-set?)| Возвращает имя первого тега в множестве, без пространства имён| |node-set| id(object)| Находит элемент с уникальным идентификатором| ===== Строковые функции ===== ^ |Функция| Описание^ |string| string(object?)| Возвращает текстовое содержимое элемента. По сути, возвращает объединённое множество текстовых элементов на один уровень ниже| |string| concat(string, string, string*)| Соединяет строки, указанные в аргументах| |number| string-length(string?)| Возвращает длину строки| |boolean| contains(string, string)| Возвращает true, если первая строка содержит вторую, иначе — false| |string| substring(string, number, number?)| Возвращает строку, вырезанную из строки, начиная с указанного номера, и, если указан второй номер, — количество символов| |string| substring-before(string, string)| Если найдена вторая строка в первой, возвращает строку до первого вхождения второй строки| |string| substring-after(string, string)| Если найдена вторая строка в первой, возвращает строку после первого вхождения второй строки| |boolean| starts-with(string, string)| Возвращает true, если вторая строка входит в начало первой, иначе — false| |boolean| ends-with(string, string)| Возвращает true, если вторая строка входит в конец первой, иначе — false| |string| normalize-space(string?)| Убирает лишние и повторные пробелы, а также управляющие символы, заменяя их пробелами| |string| translate(string, string, string)| Заменяет символы первой строки, которые встречаются во второй строке, на соответствующие позиции символам из второй строки символы из третьей строки. Например, translate("bar", "abc", "ABC") вернёт BAr.| ===== Логические функции и операторы ===== ^Символ, оператор| Значение| |<code>or</code>| логическое «или»| |<code>and</code>| логическое «и»| |<code>=</code>| логическое «равно»| |<code>< (<)</code>| логическое «меньше»| |<code>> (>)</code>| логическое «больше»| |<code><= (<=)</code>| логическое «меньше либо равно»| |<code>>= (>=)</code>| логическое «больше либо равно»| ^|Функция| Описание^ |boolean| boolean(object)| Приводит объект к логическому типу| |boolean| true()| Возвращает истину| |boolean| false()| Возвращает ложь| |boolean| not(boolean)| Отрицание, возвращает истину если аргумент ложь и наоборот ===== Числовые функции и операторы ===== ^Символ, оператор| Значение| |+| сложение| |−| вычитание| |*| умножение| |div| обычное деление (не нацело!)| |mod| остаток от деления| ^|Функция| Описание^ |number| number(object?) Переводит объект в число| |number| sum(node-set) Вернёт сумму множества. Каждый тег множества будет преобразован в строку и из него получено число| |number| floor(number) Возвращает наибольшее целое число, не большее, чем аргумент (округление к меньшему)| |number| ceiling(number) Возвращает наименьшее целое число, не меньшее, чем аргумент (округление к большему)| |number| round(number) Округляет число по математическим правилам| ===== Системные функции ===== ^|Функция| Описание^ |node-set| document(object, node-set?)| Возвращает документ, указанный в параметре object| |string| format-number(number, string, string?)| Форматирует число согласно образцу, указанному во втором параметре. Третий параметр указывает именованный формат числа, который должен быть учтён| |string| generate-id(node-set?)| Возвращает строку, являющуюся уникальным идентификатором| node-set key(string, object)| Возвращает множество с указанным ключом (аналогично функции id для идентификаторов)| |string| unparsed-entity-uri(string)| Возвращает непроанализированный URI. Если такового нет, возвращает пустую строку| |boolean| element-available(string)| Проверяет, доступен ли элемент или множество, указанное в параметре. Параметр рассматривается как XPath| |boolean| function-available(string)| Проверяет, доступна ли функция, указанная в параметре. Параметр рассматривается как XPath| |object| system-property(string)| Параметры, возвращающие системные переменные. Могут быть:| |xsl:| version — возвращает версию XSLT процессора.| |xsl:| vendor — возвращает производителя XSLT процессора.| |xsl:| vendor-url — возвращает URL, идентифицирующий производителя.| Если используется неизвестный параметр, функция возвращает пустую строку| |boolean| lang(string)| Возвращает true, если у текущего тега имеется атрибут xml: lang, либо родитель тега имеет атрибут xml: lang и в нём указан совпадающий строке символ| * * Обозначает любое имя или набор символов по указанной оси, например: * — любой дочерний узел; @* — любой атрибут * $name Обращение к переменной. name — имя переменной или параметра * [] Дополнительные условия выборки (или предикат шага адресации). Должен содержать логическое значение. Если содержит числовое, считается что это порядковый номер узла, что эквивалентно приписыванию перед этим числом выражения position()= * {} Если применяется внутри тега другого языка (например HTML), то XSLT-процессор рассматривает содержимое фигурных скобок как XPath * / Определяет уровень дерева, т. е. разделяет шаги адресации * | Объединяет результат. Т. е., в рамках одного пути можно написать несколько путей разбора через знак |, и в результат такого выражения войдёт всё, что будет найдено любым из этих путейСохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal