我需要处理评估XPath表达式的遗留代码,期望结果解析为NodeList。该代码使用NodeList来标识XPath表达式选择的节点数。只有在选择了一个节点时,代码才会继续。
现在我需要使用string-join函数,返回类型是String。有没有办法使用另一个XPath函数将String转换为NodeList?理想情况下,它会将String转换为NodeList,其中一个元素的文本内容将是String值。我尝试使用exsl:node-set()但没有成功(Saxon-HE处理器)。
答案 0 :(得分:1)
有没有办法使用另一个XPath将String转换为NodeList 功能
不,XPath只是XML文档的查询语言 - 它不会创建节点。
如果遗留代码期望XPath表达式计算到NodeList并且评估结果的XPath表达式只是一个字符串,那么要重用该遗留代码而不编写新代码,则必须更改XPath表达式,以便它选择一个或多个节点。
或者,编写自己的代码,使用XPath表达式的评估结果。
答案 1 :(得分:0)
XPath(甚至2.0)无法创建新节点,因为您需要XQuery或XSLT。 Saxon支持两者,因此您可以选择。
答案 2 :(得分:0)
我建议在Saxon XPath API周围放置一个Java层,并在此Java层中进行字符串到NodeList的转换。您的Java层可以实现JAXP XPath接口,从而“假装”成为真正的XPath引擎。