A.xsl
包括B.xsl
包括C.xsl
,其中包含函数x:test()
的定义。 x:test()
中的模板范围A.xsl
是否超出范围?如果A.xsl
调用x:test()
会怎样?
答案 0 :(得分:1)
您可以在c.xsl中定义函数x:text(),并在b.xsl和a.xsl中包含或导入。 我写了一个例子来证明这一点:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="http://www.test.com/functions">
<xsl:output indent="yes" method="text" encoding="UTF-8" omit-xml-declaration="yes"/>
<!--c.xsl-->
<xsl:function name="x:text">
<xsl:param name="string"/> <xsl:value-of select="$string"/>
</xsl:function>
</xsl:stylesheet>
<xsl:stylesheet>
<xsl:include href="c.xsl"/>
<xsl:output indent="yes" method="text" encoding="UTF-8" omit-xml-declaration="yes"/>
<!--b.xsl-->
<xsl:variable name="myFunc" select="x:text('b')"/>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="http://www.test.com/functions">
<xsl:output indent="yes" method="text" encoding="UTF-8" omit-xml-declaration="yes"/>
<xsl:include href="b.xsl"/>
<!--a.xsl-->
<xsl:template match="/">
x:text() was called in b.xsl: <xsl:value-of select="$myFunc"/>;
x:text() is called in a.xsl: <xsl:value-of select="x:text('a')"/>
</xsl:template>
</xsl:stylesheet>