我正在尝试使用不同的XSLT文件(两步视图)将XML文件转换两次。是否可以这样做?
实施例: data.xml - >由first.xsl转换 - >第一次转换的结果(XML) - >由second.xsl转换 - >第二次转换的结果(HTML)
答案 0 :(得分:3)
不幸的是,对于符合标准的XSLT 1.0:不,这是不可能的。
在XSLT 2.0中,模板的返回值可以用作另一个模板的输入;所以升级到XSLT 2.0(在其他许多方面也更容易使用)可以解决这个限制。
另一种解决方法是使用node-set
扩展功能:但是,非标准功能,显然不会在所有地方都支持此功能:有关详细信息,请参阅http://www.xml.com/pub/a/2003/07/16/nodeset.html。
答案 1 :(得分:1)
在XSLT 2.0中,这是受支持的 - 只需在<xsl:variable/>
中捕获第一次转换的结果,然后将模板(可能具有不同的模式)应用于xml文档的顶级子级(或任何其他后代) /片段包含在xsl:variable。
在XSLT 1.0中,必须使用xxx:node-set()扩展,它将xsl:variable(RTF类型 - Result Tree Fragment)的内容转换为常规XML文档/片段。 / p>
这个扩展函数由EXSLT完全标准化 - EXSLT是“最标准”且广泛实现的XSLT 1.0扩展函数库。