【问题标题】:XSLT help running in javaXSLT 帮助在 java 中运行
【发布时间】:2010-10-26 07:40:54
【问题描述】:

我是 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,但只需调用 main 即可:

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),以便我可以存储结果。

干杯

【问题讨论】:

    标签: json saxon xslt


    【解决方案1】:

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

    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();
    

    【讨论】:

    • 良好而彻底的答案,+1。
    猜你喜欢
    • 2022-08-21
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多