现代化我们的撒克逊实施

时间:2015-12-22 15:56:48

标签: java xml xpath saxon

我正在对我们的项目进行一些升级,并且由于我们过去的实施方式,我与Saxon陷入了很多混乱。

我们创建了一些用于评估xpath表达式的实用程序类,看起来我们可能使用了9.x.x系列之前的功能。我们在JUnit测试中利用实用程序类。我们希望从9.5进入9.6,但是会遇到一些编译问题。

我们编写了一个实用程序函数来评估XPath表达式

 ...
 proc.getUnderlyingConfiguration()
            .setSourceParserClass("com.boeing.cactus.xml.catalogs.CactusSchemaAwareXMLReader");

 evaluator = new XPathEvaluator(proc.getUnderlyingConfiguration());
 XPathExpression expr = evaluator.createExpression(expression);
 List<?> list = expr.evaluate(new DOMSource(node));
 return getStringFromXPathResult(list);

node对象的类型为org.w3c.dom.Node

在Saxon 9.6中,expr.evaluate不再需要DOMSource,它需要一个XPathDynamicContext,它需要Item撒克逊接口的实现者。

我们在针对InputSource评估XPath时遇到了类似的问题。在这种情况下,我们从StreamSource中的javax.xml.transform.stream开始InputSource object。然后我们调用了一个非常相似的evaluate实现:

List<?> list = expr.evaluate(XmlTransformer.getSource(source));

我真的很难弄清楚一个简单的简单步骤在哪里,或者如果我们的代码是如此扭曲,我需要重新审视我们的测试以及他们如何调用评估输出。

有没有人知道一个简单的“如何使用Saxon walk-through运行简单的XPath表达式?”这是针对9.x.x模式编写的?或者看看究竟我想不出来的东西?

我知道我可能会使用不同的API来运行简单的XPath,但我的前辈们已经了解了一些模式,我想确保我们的单元测试与我们的底层转换引擎相匹配。

感谢您的帮助。我相信这很容易执行。

0 个答案:

没有答案