2009-08-18 60 views
3

我想用兩個不同的XSLT文件(兩步視圖)將XML文件轉換兩次。是否有可能這樣做?是否可以使用XSLT創建「兩步視圖」

實施例: data.xml中 - >通過first.xsl轉化 - >由second.xsl轉化 - - >第一變換(XML)的結果>第二變換的結果(HTML)

回答

3

不幸的是,與標準兼容XSLT 1.0:不,這是不可能的。

在XSLT 2.0中,模板的返回值可以用作另一個模板的輸入;因此升級到XSLT 2.0(在其他許多方面也更容易使用)將爲您解決這一限制。

另一個解決方法是使用node-set擴展函數:但是,這是非標準的,顯然不支持相同的任何位置:有關詳細信息,請參閱http://www.xml.com/pub/a/2003/07/16/nodeset.html

1

在XSLT 2.0中支持 - 只需在<xsl:variable/>中捕獲第一個轉換的結果,然後將模板(可能具有不同模式)應用於xml文檔/片段的頂層子元素(或任何其他後代)在xsl:變量中。

在XSLT 1.0中,必須使用xxx:node-set()擴展,它將xsl:變量(RTF類型爲Result Tree Fragment)的內容轉換爲常規的XML文檔/片段。

該擴展功能由EXSLT標準化 - XSLT 1.0擴展功能的「最標準」和廣泛實現的庫。

+0

儘管我從未完全理解在1.0中需要「結果樹片段」數據類型。它經常咬傷我,我真的不知道爲什麼它首先存在。你能闡明這一點嗎? – Tomalak 2009-08-18 14:23:41

+0

@Tomalak XSLT 1.0工作組中的一些人同意James Clark的目的是爲了防止XSLT被用作編程語言......當然,這並沒有阻止語言,只有一種簡單的擴展函數和FXSL等庫,人們可以在XSLT中做任何事情。然後來到了XSLT 2.0,這個錯誤得到了糾正。 – 2009-08-18 20:50:59

相關問題