开发者

Problems with XSLT and apply templates

I'm going to be brief. I'm doing XSLT on the client. The output is a report/html with data. The report consists of several blocks, ie one block is one child element of root-node in the xml file.

There are n reports residing in n different xslt-files in my project and the reports can have the same block. That means if there is a problem with one block for one report and it is in n reports i have to update every n report (xslt file).

So i want to put all my blocks in templates (kind-of-a businesslayer) that i can reuse for my reports by xsl:include on the templates for those reports.

So the pseudo is something like this:

<?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>

I hope someone out there understands my question. I need pointers on how to go about this, if this is one way to do it. But开发者_运维问答 it doesn't seem to work.


Below is my experience that how am dealing this.

This is example which I modified your code.

<?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>

Here am calling the nodes based on the mode & match.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜