You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XQuery对两个XML文件执行笛卡尔积连接操作

你需要的是对部门集合和员工集合做全量笛卡尔积组合,直接使用双层for循环遍历两个集合后生成指定节点即可,代码如下:

<result>
{
  (: 遍历所有部门 :)
  for $dept in doc("departments.xml")/departments/department
  (: 遍历所有员工 :)
  for $emp in doc("employees.xml")/employees/employee
  return
    <dep-emp>
      <department>{data($dept/name)}</department>
      <employee>{data($emp/name)}</employee>
    </dep-emp>
}
</result>

如果是在测试环境中不方便读取外部XML文件,可以直接把XML内容定义为变量运行,写法如下:

let $emps := <employees>
    <employee cod="E01" dept="D01">
        <name>John</name>
        <middle-name>S.</middle-name>
        <lastname>Gladstone</lastname>
    </employee>
    <employee cod="E02" dept="D01">
        <name>Ana</name>
        <lastname>Ferraz</lastname>
    </employee>
</employees>
let $depts := <departments>
    <department cod="D01">
        <name>Sales</name>
        <local>3rd floor</local>
    </department>
    <department cod="D02">
        <name>Finances</name>
        <local>4th floor</local>
    </department>
</departments>
return <result>
{
  for $dept in $depts/department
  for $emp in $emps/employee
  return
    <dep-emp>
      <department>{data($dept/name)}</department>
      <employee>{data($emp/name)}</employee>
    </dep-emp>
}
</result>

如果你后续需要实现按员工所属部门匹配的内连接效果,只需要在两层for之后增加where条件where $dept/@cod = $emp/@dept即可。

内容的提问来源于stack exchange,提问作者user16295898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:51:04