如何在Java代码中定义Saxon 9.5 EE中的默认XPath命名空间?

时间:2014-07-30 11:04:32

标签: xslt saxon

如何定义xpath-default-namespace的等价物,例如:

<xsl:stylesheet version="2.0" xpath-default-namespace="http://schemas.xmlsoap.org/soap/envelope/"

在以下Saxon EE 9.5的Java代码片段中?

public String transform(String request) {
    try {
        ProfessionalConfiguration config = new ProfessionalConfiguration();
        config.setExtensionElementNamespace("http://yeah.com", "com.MyFactory");
        config.registerExtensionFunction(new MyVariable());

        EnterpriseTransformerFactory factory = new EnterpriseTransformerFactory();
        factory.setConfiguration(config);

        Source xslt = new StreamSource(new File("text.xsl"));
        Transformer transformer = factory.newTransformer(xslt);

        Source input = new StreamSource(new File("test.xml"));
        StringWriter result = new StringWriter();
        transformer.transform(input, new StreamResult(result));

        return result.toString();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

1 个答案:

答案 0 :(得分:1)

您无法仅从XSLT代码更改Java代码中的默认xpath命名空间。

您说您无法编辑XSLT样式表,但您可以。它们是XML文档并且可以转换,并且您可以使用转换语言和转换引擎。如果没有其他解决方法,请在执行之前转换样式表。