Замечание: Такой образец соответствует даже элементу
Хотя семантика образцов формулируется косвенно в терминах обработки выражений, смысл образца легко понять сразу, не прибегая к терминологии обработки выражений. Символ | в образце обозначает альтернативу. Соответствие образцу с одним или несколькими символами |, разделяющими альтернативы, засчитывается если есть соответствие одной из этих альтернатив. Для образца, состоящего из последовательности StepPattern–ов, разделенных / или //, соответствие проверяется справа налево. Соответствие образцу засчитывается только если есть соответствие самому правому StepPattern, а соответствующий элемент отвечает остальной части образца. Если разделителем является /, то таким элементом может быть только родитель, если же разделителем является //, то в качестве такого элемента может использоваться любой из предков. Соответствие StepPattern, использующему ось child, засчитывается если для данного узла NodeTest дает true, а сам узел не является узлом атрибута. Соответствие StepPattern, использующему ось attribute, засчитывается если для данного узла NodeTest дает true, а сам узел является узлом атрибута. Если присутствует [], то в StepPattern сперва обрабатывается PredicateExpr, причем проверяемый узел используется как узел контекста, а в качестве контекстного набора узлов берутся узлы, которые имеют общего родителя с узлом контекста и соответствуют NodeTest. Однако если проверяемый узел является узлом атрибута, то в этом случае контекстный набор узлов – это все атрибуты, имеющие с проверяемым атрибутом общего родителя и соответствующие NameTest.
Например,
appendix//ulist/item[position()=1]
соответствует узлу тогда и только тогда, когда выполняются все следующие условия:
NodeTest
обработка PredicateExpr
данный узел имеет родителя, отвечающего условию
5.3 Определение правил шаблона
<!– Category: top-level-element ->
<xsl:template
match = pattern
name = qname
priority = number
mode = qname >
<!– Content: ( xsl:param *, template ) ->
</xsl:template>
Правило шаблона задается элементом
Например, документ XML может содержать:
This is an <emph>important</emph> point.
Приведенное далее правило шаблона соответствует элементам
<xsl:template match='emph'>
<fo:inline-sequence font-weight='bold'>
<xsl:apply-templates/>
</fo:inline-sequence>
</xsl:template>
Примечание: В примерах этого документа префикс
Как описано далее, элемент
5.4 Использование правил шаблона
<!– Category: instruction ->