我有一些XSLT代码,如下面的
<xsl:choose>
<xsl:when test="v:Values = 'true'">
<xsl:text>A</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>B</xsl:text>
</xsl:otherwise>
...
</xsl:choose>
我想在同一个文件中多次使用这段代码。我可以把它放在模板中并在需要时调用它吗?
答案 0 :(得分:2)
是 - 它叫做xsl:call-template。
任何模板都可以命名。名称可以由命名空间限定。例如......
<xsl:template match="some match condition" name="call-me">
bla bla bla (template content)
</xsl:template>
如果模板有名称,你甚至可以省略匹配条件......
<xsl:template name="call-me">
<xsl:param name="phone-number" />
bla bla bla (template content)
</xsl:template>
命名模板包含任意数量的参数。上面的片段是声明一个名为phone-number的参数的示例。在模板的序列构造函数中,您将以与变量相同的方式引用此参数,如此...
$phone-number
要调用命名模板,请在序列构造函数中使用xsl:call-template。例如......
<xsl:call-template name="call-me">
<xsl:with-param name="phone-number" select="'55512345678'" />
</xsl:template>
请注意,xsl:with-param
用于传递实际参数值。
请注意,在XSLT 2.0中,您还可以定义可在XPATH表达式中调用的函数。在某些情况下,函数可能是命名模板的更好替代方法。
参见: