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