Tag: saxon

Java中的Saxon:用于CSV到XML的XSLT

大部分继续从这个问题: XSLT:CSV(或平面文件,或纯文本)到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中,如果有人正在寻找它。

捕获xsl结果文档的输出流

我需要一种方法来干扰写入xsl结果文档以避免将它们写入文件系统。 现在我的模板正在写入临时目录,然后我压缩该目录。 我想做那个whitout写到文件系统。 我正在使用撒克逊处理器。 提供仅使用标准Java库的解决方案。 任何建议表示赞赏。 编辑:我发现这个类为.net saxon api http://www.saxonica.com/documentation/dotnetdoc/Saxon/Api/IResultDocumentHandler.html我需要一些与java相同的东西。

在Java中使用SAXON Xpath引擎

这是我的代码: public static void main(String[] args) { // System.setProperty( // “javax.xml.xpath.XPathFactory”, // “net.sf.saxon.xpath.XPathFactoryImpl”); String xml=”#BBB##CCC##DDD#”; try{ JDocument dom = new JDocument(xml); XPathFactory factory = net.sf.saxon.xpath.XPathFactoryImpl.newInstance(); XPath xpath = factory.newXPath(); XPathExpression expr = xpath.compile(“//a[matches(.,’#…#’)]”); Object result = expr.evaluate(dom, XPathConstants.NODESET); NodeList nodes = (NodeList) result; Nodes sharped = new Nodes(nodes); for (Node n:sharped){ System.out.println(n.toString()); } } catch(Exception […]