我有一个main.xsl。它调用A.xsl和B.xsl,两者都使用相同的调用模板
<xsl:call-template name="setFormat">
...
</xsl:call-template>
我想使用&#34; setFormat&#34;模板而不是在A.xsl和B.xsl中复制它, 但是当&#34; setFormat&#34;只是在一个xsl中另一个人说&#34;命名的模板#setFormat&#39;不存在&#34;
我正在使用xsl:include
添加对main.xsl的引用
我该怎么办?
我正在使用MVS .Net 2005。
我正在使用main.xsl,main.xsl调用A.xsl和B.xsl:
<xsl:include href="./A.xsl"/> <xsl:include href="./B.xsl"/>
A.xsl和B.xsl都使用call-template调用相同的模板,名为&#34; setFormat&#34;
&#34; setFormat&#34;不能在任何部分。例如,如果它在A.xsl中,则B.xsl无法找到它,因为它不在其范围内,或者如果它在main.xsl中,则A.xsl和B.xsl无法找到它。我不想在A.xsl和B.xsl
中添加它如何调用&#34; setFormat&#34;通过调用模板没有重复吗?
答案 0 :(得分:1)
从您的问题中不清楚您的三个样式表中包含哪些样式表。
我认为您的意思是A.xsl
和B.xsl
每个xsl:include
main.xsl
,并且您要么调用A.xsl
或B.xsl
来处理您的文档。在这种情况下,您应该将共享命名模板放在main.xsl
中,以便在任何一种情况下都能看到它。
如果另一方面,您的意思是main.xsl
使用xsl:include
两次,包括A.xsl
和B.xsl
以及您在文档中调用main.xsl
,那么只有一个代码路径,命名模板可以在三个文件中的任何一个。