我有多個XSLT文件用於在流水線中處理源XML。我知道exsl:node-set
這個技巧,但是在遇到這個工作流程的一些問題之後,我決定將各種通道分成單獨的XSL文件。我現在對文件結構感到高興,並且工作流在Eclipse中正常工作。我們的發佈系統與螞蟻一起工我能處理的文件是這樣的:與螞蟻一起使用單個管道中的多個XSLT文件
<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
。這個導入解決方案是否合適?如果是這樣,我錯過了什麼?
更有效的方法是執行單個多通道轉換。這些文件可以保持原樣 - 它們將使用'xsl:import'指令導入。節省是顯而易見的 - 只需一次啓動(加載XSLT處理器)和終止,也消除了兩個中間文件及其創建,寫入,關閉和刪除。 –
@DimitreNovatchev,聽起來不錯 - 明天我會試試看。您可能想要將其作爲答案而不是評論? –
Jon Bright:作爲回答添加。 –