我將一個簡單的字符串參數傳遞給我的 Saxon 驅動的 XSLT,但它沒有被接收。這是 XSL ( min.xsl):<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:template match="/"> <xsl:param name="in"/> <Out> <xsl:choose> <xsl:when test="Val = $in">match!</xsl:when> <xsl:otherwise> <xsl:value-of select="Val"/> != <xsl:value-of select="$in"/> </xsl:otherwise> </xsl:choose> </Out> </xsl:template></xsl:stylesheet>下面是用于調用 XSLT 的代碼:import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stream.StreamResult;import javax.xml.transform.stream.StreamSource;import java.io.FileInputStream;import java.io.StringReader;public class MinXSLT { public static void main(String[] args) throws Exception { try { Class.forName("net.sf.saxon.TransformerFactoryImpl"); System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl"); System.out.println("Plugged in Saxon"); } catch (ClassNotFoundException ignore) {} final TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer e = transformerFactory.newTemplates(new StreamSource(new FileInputStream("src/test/resources/min.xsl"))).newTransformer(); e.setParameter("in", "x"); e.transform(new StreamSource(new StringReader("<Val>x</Val>")), new StreamResult(System.out)); }}這dependencies是我的部分pom.xml:<dependencies> <dependency> <groupId>saxon</groupId> <artifactId>saxon-he</artifactId> <version>9.2</version> </dependency></dependencies>是的,只是saxon-he。我在這里犯了什么罪?作為記錄,我嘗試使用較新版本的 Saxon(net.sf.saxon:Saxon-HE:9.7.x等),結果相同;但是在實際項目中我被困住了saxon:saxon-he:9.2所以升級并不是一個真正的選擇。
使用 Saxon 時未選取 XSLT 輸入參數?
慕尼黑5688855
2021-09-26 17:15:25