Как найти неповторяющиеся и неинвертированные пары значений в следующих узлах проекта? - PullRequest
0 голосов
/ 05 ноября 2019

У меня следующий результат до сих пор формирует запрос к файлам xml.

<results>
  <project>
    <pnumber>1</pnumber>
    <workers>
      <essn>123456789</essn>
      <essn>453453453</essn>

    </workers>
  </project>
  <project>
    <pnumber>2</pnumber>
    <workers>
      <essn>123456789</essn>
      <essn>333445555</essn>
      <essn>453453453</essn>
    </workers>
  </project>
  ...

И так для 6 проектов (pnumber). Мне нужно найти пары значений essn для значений каждого проекта и перечислить их для работников. Я не могу иметь повторяющиеся пары или инвертированные пары в результатах.

Iv попытался изменить приведенное ниже значение отлично, чтобы показать пары после определения, какие пары различны.

let $items := (1,2,4,4,5,5)
let $unique-items := distinct-values($items)
return
   <result>   

      <items>
      {
         for $item in $unique-items
         return <item>{$item}</item>
      }
      </items>


   </result>

Я просто получаю уникальные значения в наборе.

Я использую это, чтобы получить то, где я сейчас нахожусь,

<results>
  {
    for $project in doc("../company/project.xml")//project
    where $project/pnumber=*
    return
     <project>
      {$project/pnumber}
       {  
              let $works_on := doc("../company/works_on.xml")//works_on[pno = $project/pnumber]
              return
             <workers>
              {$works_on/essn}
                  </workers>
      } 
     </project>   
  }
</results>

Результат должен выглядеть следующим образомэто

<results>
  <project>
    <pnumber>1</pnumber>
    <workers>
      <pair1>
      <essn>123456789</essn>
      <essn>453453453</essn>
      </pair1>
    </workers>
  </project>
  <project>
    <pnumber>2</pnumber>
    <workers>

      <pair1>
      <essn>123456789</essn>
      <essn>333445555</essn>
       </pair1>

      <pair2>
      <essn>453453453</essn>
      <essn>333445555</essn>
       </pair2>

       <pair3>

       <essn>123456789</essn>
       <essn>453453453</essn>

        </pair3>

    </workers>
  </project>
  ...
...