如何从其他样式表导入模板?

时间:2017-02-18 16:13:07

标签: xml xslt import stylesheet

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

我该怎么做?

2 个答案:

答案 0 :(得分:3)

使用https://support.mulesoft.com/s/article/ka434000000TPOz/Method-not-Allowed-on-API-Kit-requests申请<xsl:call-template>非常简单:

名为f.xml的示例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 ...>导入的 - 通过一个命名模板来访问{{1}行。

答案 1 :(得分:0)

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

您可以在XSLT中定义函数,就像输出字符串的简单函数一样。

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

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