我有几个类似代码的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>
答案 0 :(得分:2)
使用<xsl:apply-imports/>
从导入的generic.xsl
中“调用”模板:
<xsl:template match="photos">
<xsl:apply-imports/>
and add some specific code
</xsl:template>
答案 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>