从其他人调用相同的调用模板包括文件

时间:2013-01-02 17:58:28

标签: xslt include

我有一个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;通过调用模板没有重复吗?

1 个答案:

答案 0 :(得分:1)

从您的问题中不清楚您的三个样式表中包含哪些样式表。

我认为您的意思是A.xslB.xsl每个xsl:include main.xsl,并且您要么调用A.xslB.xsl来处理您的文档。在这种情况下,您应该将共享命名模板放在main.xsl中,以便在任何一种情况下都能看到它。

如果另一方面,您的意思是main.xsl使用xsl:include两次,包括A.xslB.xsl以及您在文档中调用main.xsl ,那么只有一个代码路径,命名模板可以在三个文件中的任何一个。