Шаблоны (XSLT)
Шаблон поиска - это тип выражения, возвращающего набор узлов по набору условий, заданных для узла. Узлы, удовлетворяющие условиям, соответствуют шаблону поиска. Синтаксис для шаблонов поиска - это подмножество синтаксиса для выражений. В частности, в качестве шаблонов поиска могут использоваться пути доступа, соответствующие определенным ограничениям. Результатом вычисления выражения, которое также является шаблоном поиска, всегда будет объект типа node-set (набор узлов). Узел соответствует шаблону поиска, если входит в результат оценки шаблона поиска как выражения в каком-то возможном контексте, т.е. по отношению к какому-то узлу контекста. Узел контекста - это узел, который сравнивается с шаблоном поиска, или один из его предков.
В следующей таблице приведены примеры шаблонов поиска.
Шаблон |
Соответствия |
---|---|
Para |
любой элемент para |
* |
любой элемент |
chapter|appendix |
любой элемент chapter и любой элемент appendix |
olist/item |
любой элемент item с родителем olist |
appendix//para |
любой элемент para с элементом-предком appendix |
/ |
корневой узел |
text() |
любой текстовый узел |
processing-instruction() |
любая инструкция по обработке |
node() |
любой узел, кроме узла атрибута и корневого узла |
id("W11") |
элемент с уникальным идентификатором W11 |
para[1] |
любой элемент para, являющийся первым дочерним элементом para своего родителя |
*[position()=1 and self::para] |
любой элемент para, являющийся первым дочерним элементом своего родителя |
para[last()=1] |
любой элемент para, являющийся единственным дочерним элементом para своего родителя |
items/item[position()>1] |
любой элемент item, имеющий родителя items и не являющийся первым дочерним элементом item своего родителя |
item[position() mod 2 = 1] |
любой элемент item, являющийся нечетным дочерним элементом item своего родителя |
div[@class="appendix"]//p |
любой элемент p с элементом-предком div, содержащим атрибут class со значением appendix |
@class |
любой атрибут class (но не любой элемент, содержащий атрибут class) |
@* |
любой атрибут |