在同一文件中多次使用相同的XSLT代码

时间:2012-08-13 21:45:00

标签: xml xslt

我有一些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>

我想在同一个文件中多次使用这段代码。我可以把它放在模板中并在需要时调用它吗?

1 个答案:

答案 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表达式中调用的函数。在某些情况下,函数可能是命名模板的更好替代方法。

参见:

  1. XSLT 2.0 spec re.: named templates
  2. XSLT 1.0 spec re.: named templates