主要从这个问题继续:XSLT: CSV (or Flat File, or Plain Text) to XML
所以,我从这里有一个 XSLT:http: //andrewjwelch.com/code/xslt/csv/csv-to-xml_v2.html
并将 CSV 文件转换为 XML 文档。在命令行上与以下命令一起使用时会执行此操作:
java -jar saxon9he.jar -xsl:csv-to-xml.csv -it:main -o:output.xml
所以现在问题变成了:我如何在我的 Java 代码中做到这一点?
现在我有如下代码:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
StreamSource xsltSource = new StreamSource(new File("location/of/csv-to-xml.xsl"));
Transformer transformer = transformerFactory.newTransformer(xsltSource);
StringWriter stringWriter = new StringWriter();
transformer.transform(documentSource, new StreamResult(stringWriter));
String transformedDocument = stringWriter.toString().trim();
(Transformer
是 的一个实例net.sf.saxon.Controller
。)
命令行的诀窍是指定“-it:main”以指向 XSLT 中的命名模板。这意味着您不必为源文件提供“-s”标志。
问题再次出现在 Java 端。我将在哪里/如何指定这个“-it:main”?这样做不会破坏其他不需要指定的 XSLT 吗?我是否必须将每个 XSLT 文件中的每个模板命名为“main”?鉴于 Transformer.transform() 的方法签名,我必须指定源文件,所以这不会破坏我在解决这个问题方面取得的所有进展吗?
编辑:如果有人在寻找它,我发现 s9api 隐藏在 saxon9he.jar 中。