如何从另一个样式表导入模板?

How do I import templates from another stylesheet?

我知道我必须使用 xsl:import 但我不知道如何调用模板的 name

我该怎么做?

您可以使用 <xsl:call-template> 调用传统编程语言中的函数。

您可以在 XSLT 中定义函数,例如这个输出字符串的简单函数。

<xsl:template name="dosomething">
  <xsl:text>A function that does something</xsl:text>
</xsl:template>

这个函数可以通过<xsl:call-template name="dosomething">调用。

使用 <xsl:import> 应用 <xsl:call-template> 非常简单:

样本 XML 命名为 f.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <a>abc</a>
    <b>cde</b>
</root>

主要示例 XSLT f.xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="f1.xslt"/>

 <xsl:template match="/root">
   A: <xsl:value-of select="a/text()" />
   <xsl:call-template name="secondTemplate" />
 </xsl:template>

</xsl:stylesheet> 

包括示例 XSLT f1.xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template name="secondTemplate">
   B: <xsl:value-of select="b/text()" />
 </xsl:template>

</xsl:stylesheet> 

输出:

<?xml version="1.0"?>

   A: abc
   B: cde

所以第一个 XSLT(f.xslt) 确实调用了第二个 XSLT(f1.xslt) - 它是用 <xsl:import ...> 导入的 - 通过命名模板调用 <xsl:call-template name="secondTemplate" /> 行。