XQuery 不同值与 where 子句问题

2023-12-27

我对 XQuery 很陌生,所以如果我遗漏了什么,请原谅。

我正在尝试提取元素的某些子节点不同的数据,以及某个同级节点等于某个预定义字符串的数据

for $product in fn:distinct-values(document('cpwdoc')/root/package/properties/value[@key="product"])
where document('cpwdoc')/root/package/categories/category[@name="Cheap"]
return $product

我查询的 XML 如下所示:

<root>
 <package>
      <title>Some package 1</title>
      <categories><category group="Other" name="Cheap"/></categories>
      <properties>
        <value key="product">BLUE-TOOTHBRUSH</value>
      </properties>
    </package>
 <package>
      <title>Some package 2</title>
      <categories><category group="Other" name="Expensive"/></categories>
      <properties>
        <value key="product">BLUE-TOOTHBRUSH</value>
      </properties>
    </package>
 <package>
      <title>Some package 3</title>
      <categories><category group="Other" name="Expensive"/></categories>
      <properties>
        <value key="product">TOOTHPASTE</value>
      </properties>
    </package>
</root>

所以基本上我只想要产品的不同出现,并且仅在类别的名称属性等于“便宜”的情况下。

我的查询返回 DISTINCT 产品,但 where 子句似乎没有效果,它仍然返回类别为“昂贵”的产品。

谁能告诉我我做错了什么。


你的 where 子句:

where document('cpwdoc')/root/package/categories/category[@name="Cheap"]

扩展为:

where boolean(document('cpwdoc')...)

这相当于

where exists(document('cpwdoc')...)

因此,只要有至少一种便宜的产品,您就可以退回所有产品。

你想要类似下面的东西

distinct-values(
  for $package in document('cpwdoc')/root/package
  let $value := $package/properties/value
  where $value/@key = "product" and $package/categories/category/@name="Cheap"
  return $value
)

如果您喜欢路径表达式,则与以下相同

distinct-values(document('cpwdoc')/root/package[categories/category/@name="Cheap"]/properties/value[@key="product"])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XQuery 不同值与 where 子句问题 的相关文章

随机推荐

  • Spring Security - 未创建默认表

    我正在尝试将 Spring Social 集成到 Spring Boot 应用程序中的 Spring Security 之上 但 Spring Security 似乎在创建默认表时遇到问题 例如UserConnection UserProf
  • Scala 单方法接口实现

    Scala 是否有任何语法糖来替换以下代码 val thread new Thread new Runnable def run println hello world 更像是 val thread new Thread gt printl
  • Android:以编程方式更改 NFC 设置(开/关)

    我尝试在 Android 2 3 3 上以编程方式更改 NFC 设置 开 关 在手机上的 无线和网络设置 下 您可以选择是否使用NFC来读取和交换标签 所以我想在我的应用程序中切换此设置 但我似乎找不到这方面的 api 我正在寻找一些可能如
  • 如何从 JBOSS 4 和 5 连接 JMS 队列?

    我有一台运行 Jboss 4 2 2 和 Jboss 5 1 0 的服务器 问题是第三方无法在不久的将来将其应用程序升级到 Jboss 5 1 0 对我们来说这是一件简单的事情 不幸的是 我们需要从 Jboss 4 2 2 上运行的第三方应
  • 多个 imshow 子图,每个子图都有颜色条

    我想要一个由四个子图组成的图形 其中两个是常见的线图 其中两个是 imshow 图像 我可以将 imshow images 格式化为正确的绘图本身 因为它们中的每一个都需要自己的颜色条 修改后的轴和删除的另一个轴 然而 这对于次要情节来说似
  • 在动态 bool 数组上使用 memset 是否定义明确?

    就严格别名而言 这段代码的行为定义良好吗 Bool array malloc n memset array 0xFF n Bool x array 0 有效类型规则有特殊情况 memcpy and memmove C17 6 5 6 但不适
  • 从其他对象填充对象中的字段

    在 Javascript ES6 中有两个带有数据的对象 const template a b x 这是我将收到的数据对象 const data a test b test c test 如何将接收到的对象中的数据映射到模板对象不允许模板对
  • 计算特定用户在 Github 中所有项目中编写的总行数

    我想知道 Github 中是否有一种方法可以计算特定用户在整个过程中编写的代码总数all其项目 git log author
  • ios 7 MKMapView 可拖动注释在地图滚动时更改其位置

    我正在将我的应用程序 MyWorld 更新到 iOS 7 该应用程序的功能之一是您可以在地图视图上拖动图钉 iOS7下好像坏了 重现问题的步骤 向地图添加注释 工作正常 移动注释 拖动 工作正常 滚动地图 问题 每当我滚动地图视图注释时 地
  • 具有验证错误样式的 WPF Datagrid 单元格

    当出现验证错误时 我试图更改 DataGridCell 在 WPF 工具包 DataGrid 中 的默认样式 默认为红色边框 我怎样才能放置自己的模板 Thanks 尝试这个
  • Node.js 中的批量请求

    我的程序正在与每秒仅接受约 10 个请求的 Web 服务进行通信 有时 我的程序会向 Web 服务发送超过 100 个并发请求 导致我的程序崩溃 如何将 Node js 中的并发请求限制为每秒 5 个 我正在使用请求库 IF EVENT A
  • javax.persistence.TransactionRequiredException:@Lock 注释上没有正在进行任何事务

    我面临着一个我以前从未遇到过的问题 我正在尝试使用 Lock on a repository避免并发问题的方法 我收到标题中描述的错误 数据库配置 Configuration EnableTransactionManagement Enab
  • ValidationSummary 显示重复消息

    如果两个文本框同时验证失败 则 ValidationSummary 会显示相同的消息两次 难道我做错了什么 或者我可以更改设置来隐藏重复的消息 我把它分解为最简单的例子 View model MyModel Html ValidationS
  • 如何在两个不同的 dplyr 输出上运行 chisq.test ,然后将其汇总在表中?

    我的问题与我不久前发布的一个问题有关here https stackoverflow com questions 26294297 how do you summarize columns based on unique ids witho
  • WebApi2 何时使用 OnAuthorizationAsync 与 OnAuthorization

    我们最近通过使用存储在 Azure Document DB 中的凭据实现自定义 AuthorizationFilterAttribute 来实现 API 身份验证 DocDB 要求一切都使用异步 通过实验我们发现WebApi2同步控制器将使
  • 如何使用现代 Spring Boot + Data JPA 和 Hibernate 设置生成 ddl 创建脚本?

    目前我使用的是默认的 SpringBootApplication具有以下属性的注释application properties spring datasource url jdbc mysql localhost dbname spring
  • 如何获取 dag 状态,例如运行或成功或失败

    我想知道dag的状态是运行还是失败还是成功 我通过 CL 参数气流触发器触发 dag 在执行作业后 我想知道运行的状态 我找不到任何办法 我尝试了气流 dag state 但它没有给出任何结果 如果一天中有多次运行来通过命令行参数或 pyt
  • 使用 mysql_query 成功但使用 mysqli_query 失败的注入攻击

    Update 对此有一些有启发性的回应 要点是mysql函数已被弃用 而且mysqli允许您使用准备好的语句 这很有意义 而且很有帮助 而在我看来 仅仅 使用 mysqli 既没有建设性 也没有帮助 任何时候在 SO 上询问 PHP 和 M
  • 如何让Sprite遵循贝塞尔曲线

    我对 Objective C 和 Sprite Kit 还很陌生 但我已经做了一段时间的游戏开发 我目前正在开发一款 2D 游戏 敌舰在屏幕上从右向左移动 我一直在关注游戏不同部分的教程 然后在必要时进行添加 我找到了一个教程 其中游戏中的
  • XQuery 不同值与 where 子句问题

    我对 XQuery 很陌生 所以如果我遗漏了什么 请原谅 我正在尝试提取元素的某些子节点不同的数据 以及某个同级节点等于某个预定义字符串的数据 for product in fn distinct values document cpwdo