xQuery:关联 2 个属性并返回与所述属性相关的数据

xQuery: Associating 2 attributes and returning data related to said attribute

我有一个 XML 文件,其中包含有关体育馆教练(监督员)和他们教的 activity(活动)的信息。我一直在尝试创建一个查询,该查询将 activities 元素中的监视器代码属性与 monitores 元素中每个监视器的详细信息相关联。

具体的任务是:"Return the details of each monitor that teaches an activity with 2 or more other monitors."

在活动元素中有两个元素有 2 个监视器。我可以使用以下代码获取这些:

for $test in doc("polideportivo.xml")/polideportivo/actividades/actividad/monitores 
where count($test/monitor) > 1 
return data($test/monitor/@codigo)

这给了我在每个 activity:

中出现不止一次的代码属性的结果
<results>m002 m003 m004 m005</results>

但我的问题在于将这些代码链接到 monitores 元素中的监视器代码时。

我起初想使用 let 将上述代码应用于变量,但它显示每个 activity 属性,而不是仅显示具有 2 个或更多属性的属性。

谁能给我指出正确的方向?

下面我将留下XML的片段:

<polideportivo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="polideportivo.xsd">
<monitores>
  <monitor codigo="m001">
    <nombre>Mario</nombre>
    <apellidos>Cansado Pérez</apellidos>
    <telefono>968222222</telefono>
    <salario>1200</salario>
  </monitor>
  <monitor codigo="m002">...</monitor>
  <monitor codigo="m003">...</monitor>
  <monitor codigo="m004">...</monitor>
  <monitor codigo="m005">...</monitor>
</monitores>
<actividades>
  <actividad codigo="a10">
   <nombre>Pilates</nombre>
   <duracion>55</duracion>
   <intensidad>Ligero</intensidad>
   <lugar>Sala Fitness</lugar>
   <horario>...</horario>
   <monitores>
    <monitor codigo="m001"/>
   </monitores>
</actividad>
<actividad codigo="a20">
   <nombre>Crosstraining</nombre>
   <duracion>55</duracion>
   <intensidad>Fuerte</intensidad>
   <lugar>Sala Fitness</lugar>
   <horario>
    <sesion>
     <día>Martes</día>
     <horas>
      <hora>10:00</hora>
      <hora>16:00</hora>
      <hora>20:00</hora>
    </horas>
   </sesion>
  </horario>
   <monitores>
    <monitor codigo="m002"/>
    <monitor codigo="m003"/>
   </monitores>
</actividad>

看起来像

/*/monitores/monitor[
   some $actividad in /*/actividades/actividad 
   satisfies 
     ($actividad/monitores/monitor/@codigo = @codigo 
      and $actividad/monitores/monitor[2])]

是一个 XPath 2 及更高版本(这样也是一个 XQuery 1 及更高版本)表达你的口头描述(我不确定你是否想要检查两个或更多或至少两个监视器,示例检查至少两个。