是否可以制作“抽象”的xsl文件

时间:2014-02-25 16:01:51

标签: xslt

我有几个类似代码的xslt文件。我想用一些代码制作通用文件,并将它包含在这些xslt中。

例如,

generic.xsl

<xsl:template match="photos">  some general gode </xsl:template>

specific.xsl

include|import generic.xsl

<xsl:template match="photos">
 Here I need to invoke code from generic.xsl
 and add some specific code

</xsl:template>

2 个答案:

答案 0 :(得分:2)

使用<xsl:apply-imports/>从导入的generic.xsl中“调用”模板:

<xsl:template match="photos">
 <xsl:apply-imports/>
 and add some specific code

</xsl:template>

另见http://www.w3.org/TR/xslt#apply-imports

答案 1 :(得分:-1)

您可以使用<xsl:import>从其他文件导入XSLT模板。如果此模板存在于内部样式表中,您甚至不需要在外部样式表中定义<xsl:template match="photos">

如果你这样做(如马丁所说),你可以使用<xsl:apply-imports>来调用导入的样式表。这是由于导入的模板的优先级低于主要模板。如果您希望它们具有相同的优先级,则可以使用<xsl:include/>

或者,您可以按名称定义模板:

<xsl:template name="process_photos">
  ...
</xsl:template>

然后使用<xsl:call-template>调用它。当前上下文传递给被调用的模板:

<xsl:template match="photos">
    <xsl:call-template name="process_photos"/>
</xsl:template>