我需要创建一个 Javascript 函数,它允许获得根据 XML 评估 XQuery 3.1 表达式的结果。
功能:
function evaluateXQuery(xmlStr, xqueryStr) {
// XQuery 3.1 evaluation
return resultStr;
}
例子:
// XML Document
const xml =
`<bookstore>
<book>
<title>XQuery Kick Start</title>
<price>30.00</price>
</book>
<book>
<title>Harry Potter</title>
<price>24.99</price>
</book>
</bookstore>`
// XQuery
const xquery =
`for $x in /bookstore/book
where $x/price>25
return $x/title`;
// XQuery 3.1 evaluation
const output = evaluateXQuery(xml, xquery);
// Output
console.log(output); // "<title>XQuery Kick Start</title>"
我使用 SaxonJS 2.5(浏览器版本)来评估 XPath 表达式,但我在 documentation 中找不到任何关于 XQuery 查询评估的信息。
为了评估 XPath 表达式,我创建了以下函数:
async function evaluteXPath(xmlStr, xpathStr) {
const doc = await SaxonJS.getResource({
text: xmlStr,
type: 'xml'
});
return SaxonJS.XPath.evaluate(xpathStr, doc);
}
SaxonJS.XPath.evaluate
执行XSLT转换。
我正在寻找与上述类似的东西,但适用于 XQuery。
欢迎任何帮助。
SaxonJS 不包括 XQuery 支持:只有 XSLT 3.0 和 XPath 3.1.
您的特定示例查询当然可以用 XPath 轻松编写:
/bookstore/book[price>25]/title