我有多个 XSLT 文件,用于在管道中处理我的源 XML。我知道其中的技巧,exsl:node-set
但在遇到此工作流程的一些问题后,我决定将各种通道拆分为单独的 XSL 文件。我现在对文件的结构感到非常满意,并且工作流在 Eclipse 中运行良好。我们的发布系统适用于 ant。我可以像这样处理文件:
<xslt basedir="src-xml" style="src-xml/preprocess_1.xsl" in="src-xml/original.xml" out="src-xml/temp_1.xml" />
<xslt basedir="src-xml" style="src-xml/preprocess_2.xsl" in="src-xml/temp_1.xml" out="src-xml/temp_2.xml" />
<xslt basedir="src-xml" style="src-xml/preprocess_3.xsl" in="src-xml/temp_2.xml" out="src-xml/temp_3.xml" />
<xslt basedir="src-xml" style="src-xml/finaloutput.xsl" in="src-xml/temp_3.xml" out="${finaloutput}" />
但是这种方法,通过磁盘上的多个文件,似乎效率低下。有没有更好的方法来用蚂蚁做这件事?
按照 Dimitre 的建议进行更新
我为自己创建了一个围绕其他各种 XSL 的包装器,如下所示:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:fn='http://www.w3.org/2005/xpath-functions' xmlns:exslt="http://exslt.org/common">
<xsl:import href="preprocess_1.xsl"/>
<xsl:import href="preprocess_2.xsl"/>
<xsl:import href="preprocess_3.xsl"/>
<xsl:import href="finaloutput.xsl"/>
<xsl:output method="text" />
<xsl:template match="/">
<xsl:apply-imports />
</xsl:template>
</xsl:stylesheet>
这……效果不好。看起来文档在最终输出 XSL 运行之前没有经过预处理。在这里我可能应该更清楚:preprocess
XSL 文件正在修改文档、添加属性等。 preprocess_3
是基于 的输出..._2
是基于..._1
。这种导入解决方案仍然合适吗?如果是这样,我错过了什么?