XSLT和应用模板的问题

XSLT和应用模板的问题,xslt,Xslt,我将简短地说。我正在客户端上执行XSLT。输出是一个包含数据的报表/html。报告由几个块组成,即一个块是xml文件中根节点的一个子元素 在我的项目中,有n个报告驻留在n个不同的xslt文件中,这些报告可以具有相同的块。这意味着,如果一个报告中的一个块出现问题,并且出现在n个报告中,我必须更新每个n个报告(xslt文件) 因此,我想将我的所有块放在模板中(有点像业务层),通过xsl:include在这些报告的模板中重用这些模板 所以伪函数是这样的: <?xml version="1.0".

我将简短地说。我正在客户端上执行XSLT。输出是一个包含数据的报表/html。报告由几个块组成,即一个块是xml文件中根节点的一个子元素

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

因此,我想将我的所有块放在模板中(有点像业务层),通过xsl:include在这些报告的模板中重用这些模板

所以伪函数是这样的:

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

MyBlock.xslt:
HTML输出

我希望有人能理解我的问题。如果这是一种方法的话,我需要关于如何去做的指针。但它似乎不起作用。

下面是我如何处理这件事的经验

这是我修改代码的示例

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

MyBlock.xslt:
HTML输出
HTML输出

这里我根据模式调用节点&匹配

您的想法是正确的。许多库使用包含/导入链。您可能还需要考虑使用<代码> XSL:IMPux< /Cuff>,这将为您提供重写任何导入模板的能力。查看Docbook样式表,以参考一个样式表库,该样式表库分解模块并使用包含/导入模块。似乎没有问题要回答。您遇到了什么问题?无法使用
客户端通常是一个挑战,因为您必须能够首先创建必要的目录结构,并在客户端写入要包含/导入的文件,而这可能是不允许的。除了现实检查之外,最好将代码组织为一组模块(库),可以有选择地导入。该项目驻留在一个usb内存中,其中已经包含文件夹和数据。这个问题似乎不是文件系统授权问题,因为到目前为止,它一直在从usb内存上的文件系统读取数据。每个数据和xslt都存储在js文件中。当我从xslt报告中取出逻辑并将它放在usb内存中的另一个预先创建的目录“块”时,问题就出现了。因此,从如上所述的xslt报告中,我包含了这些模块/库。该项目非常广泛,我只想提供一些指导。我昨天看到的一件事是IE客户端上的转换返回“null”。xml是有效的,xslt也应该是有效的。有什么想法吗?