Вы не можете этого сделать, однако стоит отметить, что когда вы вызываете именованный шаблон, контекстный узел не меняется.В зависимости от контекста, вы можете иметь доступ к именованному шаблону, который будет передаваться в качестве параметра напрямую.
Также возможно иметь параметр, который устанавливает текущий узел контекста в качестве значения по умолчанию, так что вы можете вызывать его без параметра для ссылки на текущий узел или, необязательно, передать узел.
Например, с помощью ввода:
<foo>
<input>xxx</input>
</foo>
Вместо этого:1008 *
<xsl:template match="foo">
<xsl:call-template name="bar">
<xsl:with-param name="myparam" select="input" />
</xsl:call-template>
</xsl:template>
<xsl:template name="bar">
<xsl:param name="myparam" />
<xsl:value-of select="concat('Value:',$myparam)" />
</xsl:template>
Вы можете просто сделать
<xsl:template match="input">
<xsl:call-template name="bar" />
</xsl:template>
<xsl:template name="bar">
<xsl:param name="myparam" select="." />
<xsl:value-of select="concat('Value:',$myparam)" />
</xsl:template>
В обоих случаях $myparam
будет узлом input
.Шаблон foo
в первом примере также отлично подходит для именованного шаблона bar
во втором;при передаче значения параметру оно переопределяет значение по умолчанию, указанное в атрибуте select
узла шаблонов <xsl:param>
.