2017-02-18 61 views
0

我知道我必須使用xsl:import但我不知道如何調用模板的name如何從其他樣式表導入模板?

我該怎麼辦呢?

+1

當您在文件中導入另一個xslt時,它將自動應用您的轉換。 – Rupesh

+1

你的問題不清楚。當你使用'xsl:import',** all **時,導入的樣式表中的模板被導入。然後,您可以調用或應用它們,就好像它們是您自己的樣式表的一部分。更多信息,請閱讀:http://www.xml.com/pub/a/2000/11/01/xslt/ –

回答

3

使用<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" />行訪問的命名模板。

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">調用。

+0

是的,但是我已經在XSLT文件中完成了大量模板,我想將它們導入到另一個XSLT文件,所以我可以重複使用它們。 我不知道該怎麼做......我知道我必須使用'xsl:import',但不知道如何在之後調用模板。 – Guilhermeffable

+0

您不需要全部導入,導入上游文件就足夠了。 –