我正试图从模板中访问另一个xsl文件中的xsl模板。这两个模板位于不同的XSL文件上,这就是我需要文档功能的原因。这些模板也适用于不同的xml文件。
我的问题是如何从第一个模板内部调用第二个模板。我的代码示例:
我在模板库中:
<xsl:template match="Library">
<fo:table table-layout="fixed" width="160mm">
<fo:table-column column-width="80mm"/>
<fo:table-column column-width="80mm"/>
<fo:table-body>
<fo:table-row>
<xsl:for-each select="document(Library/@File)/Document/Books">
<xsl:apply-templates select="."/>
</xsl:for-each>
</fo:table-row>
<fo:table-body>
</fo:table>
</xsl:template>
我正在尝试访问模板图书:
<xsl:template match="Books">
<fo:table-cell>
<fo:block font-family="arial" font-size="8pt" text-align="left">
<xsl:value-of select="substring(@IBAN,4)"/>
</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-family="arial" font-size="8pt" text-align="left">
<xsl:value-of select="@date"/>
</fo:block>
</fo:table-cell>
</xsl:template>
document函数中的第一个参数似乎设置不正确。有没有想过我该怎么重写它?我在论坛上找不到任何问题有类似的问题。如有任何帮助,我们将不胜感激,感谢
若要从另一个XSLT文件引入模板,请使用xsl:import
或xsl:include
。如果要将XSLT模板应用于指定文档中的XML以及默认输入XML,请使用xsl:document
。
不幸的是,您将无法在XSLT文件的路径中使用变量,因为该路径是在编译时解析的。
如果路径不能静态确定(可能通过相对路径规范实现所需的变化),您可能需要重新考虑您的整体组织。您可以在运行XSLT之前用程序编写XSLT,以便能够动态地编写静态@href,但在运行之前一定要重新考虑您的整体解决方案体系结构。