Модуль библиотеки XQuery (новичок в xquery) - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в Xquery и пытаюсь создать библиотечный модуль, который делает несколько вещей.

  1. Возвращает список медалей, выигранных указанным спортсменом.
  2. Вставить запрос FLOWR, который проходит через каждую медаль из документа медалей, для которого athID равен значению параметра aID
  3. Создайте переменную с именем Eventname с именем события в текущей итерации.
  4. Затем я создаю функцию, которая выведет общее количество медалей, указанное c спортсменом, выигранным

Код:

xquery version "1.0";

module namespace olym="http://www.example.com/olympics";

declare variable $olym:athletes := doc('athletes.xml')/athletes/athlete;
declare variable $olym:discipline := doc('discipline.xml')/disciplines/discipline;
declare variable $olym:events := doc('events.xml')/events/event;
declare variable $olym:medals := doc('medals.xml')/medals/medal;
declare variable $olym:sports := doc('sports.xml')/sports/sport;

(: 
   Library module for olympics queries

   Author:  Zavier Vaidya   
   Date:  4/21/20     
   Filename:   olym_functions.xqm

 :)

declare function olym:getAthleteMedals($aID as xs:string, $eID as xs:string) as element()* 
{
  let $athleteId := $olym:athletes[@athID=$aID]
  let $eventName := $olym:events[@eventID=$eID]
  where $olym:medals[@eventID=$eID]
  return $olym:medals[@athID=$athleteID]

  <athIDMedals>{
    for $medals in doc('medals.xml')//medal
    where $medals/@athID='aID'
    return $medals
    }</athIDMedals>
};

declare function olym:athleteMedalCount($aID as xs:string) as element()* 
{
  let $c := $olym:medals[@athID]
  for @athID in distinct-values($c)
      let $count := count($c[. eq @athID])
      return <result>
                <athlete>{@athID}</althete> 
                <totalMedals>{$count}</totalMedals>
             </result>
};

пример структуры файла медали:

<medals>
   <medal athID="A3577" eventID="E6" olympicID="Summer1988" place="2-Silver"/>

Пример структуры файла спортсмена:

<athletes>
   <athlete athID="A100" country="MAR" gender="Male" name="ACHIK, Mohamed"/>

Пример файла события структура:

<events>
   <event eventID="E1" eventName="- 47.63kg (flyweight)" sportID="S10" discID="D13" participation="individual"/>
...