XSLT的问题和应用模板

时间:2011-09-25 22:10:59

标签: xslt

我要简短一点。我在客户端上做XSLT。输出是带有数据的report / html。该报告由几个块组成,即一个块是xml文件中根节点的一个子元素。

我的项目中有n个不同的xslt文件中有n个报告,报告可以有相同的块。这意味着如果一个报告的一个块出现问题,并且它在n个报告中,我必须更新每个n报告(xslt文件)。

所以我想把我所有的块都放在模板(类似于业务层)中,我可以通过xsl重复使用我的报告:包含在这些报告的模板上。

所以伪就是这样的:

<?xml version="1.0".....?>
<xsl:stylesheet version="1.0"....>
  <xsl:include href="../../Blocks/MyBlock.xslt"/>
  <xsl:template match='/'>
     <xsl:apply-templates />
  </xsl:template>
</xsl:stylesheet>


MyBlock.xslt:

<?xml version="1.0"....?>
<xsl:stylesheet version="1.0".....>
  <xsl:template match='/root/rating'>
     HTML OUTPUT
   </xsl:template>
</xsl:stylesheet>

我希望有人了解我的问题。如果这是一种方法,我需要指出如何解决这个问题。但它似乎没有用。

1 个答案:

答案 0 :(得分:0)

以下是我如何处理此问题的经验。

这是我修改你的代码的例子。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0">
    <xsl:include href="../../Blocks/MyBlock.xslt"/>
    <xsl:template match="/">
        <xsl:apply-templates select="node()" mode="callingNode1"/>
    </xsl:template>
</xsl:stylesheet>

MyBlock.xslt:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0">
    <xsl:template mode="callingNode1" match="*">  
         HTML OUTPUT  
     </xsl:template>
     <xsl:template mode="callingNode2" match="/root/rating">  
         HTML OUTPUT  
     </xsl:template>
</xsl:stylesheet>

这是基于模式&amp;的匹配