Я работаю над заданием xquery, и я не понимаю, правильно ли я это делаю, я делаю модуль библиотеки для последующих xqueries. текущий шаг, на котором я застрял, это то, что мне нужно создать функцию с именем GetAthleteMedals, которая возвращает медали, выигранные указанным спортсменом c, с единственным параметром с именем aID, который хранит идентификатор althletes, тогда в рамках этой функции мне нужно сделать FLOWR запрос, который проходит через каждую медаль из документа с медалями, AthID которого равен значению параметра aID.
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;
(:
New Perspectives on XML, 3rd Edition
Tutorial 9
Case Problem 3
Library module for olympics queries
Author: Zavier Vaidya
Date: 4/21/20
Filename: olym_functions.xqm
:)
declare function olym:GetAthleteMedals($aID as xs:string) as element()*
{
let $athleteId := doc('athletes.xml')//athlete[athID=$aID]
let $medals := doc('medals.xml')//medal
return $medals[@medalId=$athleteId/@medalId]
<athIDMedals medal="athID">{
for $medals in doc('medals.xml')/medals/medal
where $medals/medal='athID'
return $medal
}</athIDMedals>
};
пример медалей. xml структура
<medals>
<medal athID="A3577" eventID="E6" olympicID="Summer1988" place="2-Silver"/>
пример спортсменов. xml структура
<athletes>
<athlete athID="A100" country="MAR" gender="Male" name="ACHIK, Mohamed"/>