如何定义xpath-default-namespace的等价物,例如:
<xsl:stylesheet version="2.0" xpath-default-namespace="http://schemas.xmlsoap.org/soap/envelope/"
在下面的Java代码片段为Saxon EE 9.5?
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);
}
}
不能从Java代码更改默认xpath名称空间,只能从XSLT代码更改。
你说你不能编辑XSLT样式表,但是你可以。它们是XML文档,可以进行转换,并且可以使用转换语言和转换引擎。如果没有其他解决方法,请在执行样式表之前对其进行转换。