Язык преобразований XSL


Образцы


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

Некоторые примеры шаблонов:

  • para соответствует любому элементу para

  • * соответствует любому элементу

  • chapter|appendix соответствует любому элементу chapter и любому элементу appendix

  • olist/item соответствует любому элементу item с родителем olist

  • appendix//para соответствует любому элементу para, предком которого является элемент appendix

  • / соответствует корневому узлу

  • text() соответствует любому текстовому узлу

  • processing-instruction() соответствует любой инструкции обработки

  • node() соответствует любому узлу за исключением узла атрибута и корневого узла

  • id("W11") соответствует элементу с уникальным ID W11

  • para[1] соответствует любому элементу para, который для своего родителя будет первым непосредственным потомком являющимся элементом para

  • *[position()=1 and self::para] соответствует любому элементу para, являющемуся для своего родителя первым непосредственным элементом-потомком

  • para[last()=1] соответствует любому элементу para, который является для своего родителя единственным непосредственным потомком para

  • items/item[position()>1] соответствует любому элементу item, который имеет родителя items, но не является для этого родителя первым непосредственным потомком item




  • - Начало -  - Назад -  - Вперед -