使用 SaxonJS 2.5(浏览器)的 XQuery 3.1 评估

问题描述 投票:0回答:1

我想要的

我需要创建一个 Javascript 函数,它允许获得根据 XML 评估 XQuery 3.1 表达式的结果。

功能:

  • 必须接收两个参数:XML 文档(字符串)和XQuery 表达式(字符串)。
  • 必须返回 XQuery 评估(字符串)的结果。
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。

欢迎任何帮助。

javascript xml xquery saxon-js xquery-3.1
1个回答
0
投票

SaxonJS 不包括 XQuery 支持:只有 XSLT 3.0 和 XPath 3.1.

您的特定示例查询当然可以用 XPath 轻松编写:

/bookstore/book[price>25]/title
© www.soinside.com 2019 - 2024. All rights reserved.