从找到匹配值的子节点获取数据的xquery问题
我面临Xquery的一个问题。 下面是一个xml示例,我在其中应用xquery来获取基于作者和年份的价格值。然而,查询正在从价格标签返回所有值 图书标签的数量不是有限的,可以是1到N XML: 输出: 60 50 所需输出: 五十从找到匹配值的子节点获取数据的xquery问题,xquery,Xquery,我面临Xquery的一个问题。 下面是一个xml示例,我在其中应用xquery来获取基于作者和年份的价格值。然而,查询正在从价格标签返回所有值 图书标签的数量不是有限的,可以是1到N XML: 输出: 60 50 所需输出: 五十 谢谢您当前的XPath/root/*与/root/\u 1匹配,where子句测试\u 1元素是否有book元素,该元素的年份是2009年,并且它有book元素,其作者是Vaidyanathan Nagarajan。请注意,可能有任何一本书满足这两个条件——这并不是说
谢谢您当前的XPath
/root/*
与/root/\u 1
匹配,where子句测试\u 1
元素是否有book
元素,该元素的年份是2009年,并且它有book
元素,其作者是Vaidyanathan Nagarajan。请注意,可能有任何一本书满足这两个条件——这并不是说有一本书同时满足这两个条件。where子句将删除不满足where子句条件的$record
项,而不是过滤$record/book
元素。然后,您将从/root/_1
返回两个book/price
值
如果您只想从书籍
中获得满足where子句中两个条件的价格
,请尝试以下操作:
for $book in /root/*/book
where $book/year='2009' and $book/author='Vaidyanathan Nagarajan'
return
fn:data($book/price)
您也可以在没有FLWOR的情况下实现同样的功能,只需使用XPath和谓词过滤器:
/root/*/book[year='2009' and author='Vaidyanathan Nagarajan']/price/fn:data()
您是手工键入的,还是在代码/EX1> <代码>中的<代码> > /代码丢失?请将此视为键入错误…谢谢Mads Hansen,您的替代解决方案实际上就是我一直在寻找的。再次感谢!
for $book in /root/*/book
where $book/year='2009' and $book/author='Vaidyanathan Nagarajan'
return
fn:data($book/price)
/root/*/book[year='2009' and author='Vaidyanathan Nagarajan']/price/fn:data()