XSLT帮助在java中运行

时间:2010-10-26 07:40:55

标签: json saxon xslt

我是XSLT世界的新手,我基本上试图从HERE

运行JSON转换

但是如果我使用这种方法:

TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer transformer = tFactory.newTransformer(new StreamSource("src\\json\\xml-to-json.xsl"));
        transformer.transform(new StreamSource("src\\json\\xmltest.xml"), new StreamResult(new FileOutputStream("birds.out")));

        System.out.println(result);

我收到以下错误:

SystemId Unknown; Line #59; Column #127; Could not find function: if
SystemId Unknown; Line #59; Column #127; Extra illegal tokens: 'then', 'http://json.org/', ':', 'create-node', '(', '$', 'input', ',', 'false', '(', ')', ')', 'else', 'http://json.org/', ':', 'create-simple-node', '(', '$', 'input', ')'
SystemId Unknown; Line #59; Column #127; function token not found.

如果我使用Saxon,我宁愿使用inbuit,因为许可,但只需调用它的主要工作:

String[] args = new String[2];
args[0]="d:\\xmltest.xml";
args[1]="d:\\xml-to-json.xsl";
net.sf.saxon.Transform.main(args);

但我不确定如何在Java中正确编码(不调用main),这样我就可以存储结果。

干杯

1 个答案:

答案 0 :(得分:5)

这里有两个问题。 1)为什么第一次尝试失败并出现错误? 2)如何从撒克逊获得结果?

1)第一次尝试失败,因为您使用的是XSLT 1.0处理器。正如page you referenced所说,

  

XSLTJSON是一个XSLT 2.0样式表   将任意XML转换为JavaScript   对象表示法(JSON)。 ......如果你这样做   你没有XSLT 2.0处理器   可以使用XSLTJSON Lite,这是一个   用于转换XML的XSLT 1.0样式表   到JSONML格式。

因此,如果您使用XSLTJSON Lite,您的问题应该得到解决。

2)如果你还想尝试撒克逊,this page looks useful。它不是直接调用Saxon,而是使用

 // set the TransformFactory to use the Saxon TransformerFactoryImpl method
 System.setProperty("javax.xml.transform.TransformerFactory",
                    "net.sf.saxon.TransformerFactoryImpl");

之前的

 TransformerFactory tfactory = TransformerFactory.newInstance();