последующих узлов, имеющих того же родителя и их потомков. Заметим, что для самого элемента
Одна привязка переменной маскирует другую, если она появляется в точке, где вторая привязка была видна и обе они имеют одно и то же имя. Если привязка переменной, задаваемая в шаблоне элементом
<xsl:template name='foo'>
<xsl:param name='x' select='1'/>
<xsl:variable name='x' select='2'/>
</xsl:template>
Однако допустим другой вариант:
<xsl:param name='x' select='1'/>
<xsl:template name='foo'>
<xsl:variable name='x' select='2'/>
</xsl:template>
Замечание: В java ближайшим эквивалентом элемента
<xsl:variable name='x' select=''value''/>
имеет семантику, похожую на
final Object x = «value»;
В XSLT нет эквивалента оператору присвоения из Java
x = «value»;
поскольку это затруднило бы реализацию процессора, который бы обрабатывал документ не в пакетном режиме, то есть, последовательно от начала до конца.
11.6 Передача параметров шаблону
<xsl:with-param
name = qname
select = expression >
<!– Content: template ->
</xsl:with-param>
Параметры передаются шаблонам с помощью элемента
В данном примере определяется именованный шаблон
<xsl:template name='numbered-block'>
<xsl:param name='format'>1. </xsl:param>
<fo:block>
<xsl:number format='{$format}'/>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match='ol//ol/li'>
<xsl:call-template name='numbered-block'>
<xsl:with-param name='format'>a. </xsl:with-param>
</xsl:call-template>
</xsl:template>
12 Дополнительные функции
В данной главе описываются специфичные для XSLT дополнения к основной библиотеке функций XPath. Некоторые из этих дополнительных функций задействуют также информацию, заданную в стиле