xpath - 引发错误:XDMP-UNEXPECTED: (err:XPST0003) 意外的令牌语法错误,意外的 For_,期望 Order_ 或 Return_ 或 Stable_
问题描述
一旦在 qconsole Marklogic 中运行以下代码,我就会遇到错误
XDMP-UNEXPECTED: (err:XPST0003) 意外的令牌语法错误,意外的 For_,期望 Order_ 或 Return_ 或 Stable_
let $prices := fn:doc('/training/prices.xml')/prices
let $order := fn:doc('/training/order.xml')/order
where $prices/priceList/prod[@num=$order/item/@num]
for $kk in $prices/priceList/prod[@num=$order/item/@num]
return
<item>
{$kk}
</item>
谢谢..
解决方案
不需要 XQuery 3。return
只需在 thewhere
和 next之间添加一个额外的for
:
let $prices := fn:doc('/training/prices.xml')/prices
let $order := fn:doc('/training/order.xml')/order
where $prices/priceList/prod[@num=$order/item/@num]
return
for $kk in $prices/priceList/prod[@num=$order/item/@num]
return
<item>
{$kk}
</item>
为了遵循 Michael 的出色建议,并优化以返回完整项目,我将翻转 XPath,并直接返回订单项目。就像是:
let $prices := fn:doc('/training/prices.xml')/prices
let $order := fn:doc('/training/order.xml')/order
for $item in $order/item
where $prices/priceList/prod[@num = $item/@num]
return
$item
甚至更短:
let $prices := fn:doc('/training/prices.xml')/prices
let $order := fn:doc('/training/order.xml')/order
return
$order/item[@num = $prices/priceList/prod/@num]
!
推荐阅读
- fusionauth - fusionauth - after install can't access to setup wizard
- nginx - nginx server config: matching URI returns 404
- security - How can I block search engine indexing of files and subdirectories other than root directory .php and .html files without listing the directory names?
- visual-studio - Visual Studio does not build with "Unable to copy file. Access denied."
- python - 轴标签部分中的 Matplotlib 斜体 - 应用于默认字体但未指定字体
- c - struct inode_operations permission function arguments
- sql - Oracle DB query not returning the expecting results
- android - android studio cannot resolve symbol R.raw
- c++ - Is it possible to create a variadic template function with a few parameters being non-variadic?
- python - 下面代码的输入形状应该是什么