top*_*r-j 4 xslt visual-studio-2008
我遇到了包含xslt模板的问题.
我有一个包含b.xslt和c.xslt的xslt.
b和c都需要位于d.xslt中的模板.如果我在b和c中添加include语句,我在VS2008中遇到重复的模板错误:
The named template 'MyTemplate' does not exist.
Run Code Online (Sandbox Code Playgroud)
当我尝试点击使用这些XSLT的网页时,我收到错误,但无法正确显示.
如果我在a.xslt中包含d.xslt它将正确显示,但我在b和c中收到错误,指出我引用的模板不存在:
'MyTemplate' is a duplicate template name.
Run Code Online (Sandbox Code Playgroud)
拥有这种包含树的正确方法是什么?或许它只是一个VS2008问题?
我可以消除d.xslt并将该模板添加到b和c中,但如果模板位于一个位置,则更容易管理.
Mad*_*sen 10
使用xsl:include与将它们全部粘贴在一个巨型文件中相同,这也会给您带来相同的重复模板错误.
用xsl:import而不是xsl:include.
它将覆盖/合并所有模板,为您提供超级设置.导入链中的最后一个模板将"赢"而不是给出重复的定义错误,因为它具有更高的优先级.
xsl:importb.xslt和c.xslt. xsl:include或xsl:importd.xslt.就个人而言,我倾向于始终使用xsl:import过xsl:include.
唯一真正的缺点xsl:import是,您可能会意外地在导入链中进一步覆盖模板而不知道它(因为您不会得到与您相同的编译错误xsl:include).可能会有轻微的性能损失,因为XSLT处理器必须"思考"更多关于导入链,但我没有发现这是一个问题.