如何从另一个样式表导入模板?
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" />
行。
我知道我必须使用 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" />
行。