Рассмотрим файл XML определяется как:Невозможно выполнить умножение с XQuery в Basex
<?xml version="1.0"?>
<sports>
<teams>
<team tno="t100">
<tname>Knights</tname>
<city>London</city>
</team>
<team tno="t200">
<tname>Dukes</tname>
<city>Surrey</city>
</team>
<team tno="t300">
<tname>Kings</tname>
<city>Leeds</city>
</team>
</teams>
<players>
<player pid="p501">
<pname>Simon</pname>
<city>London</city>
</player>
<player pid="p502">
<pname>Andrew</pname>
<city>Birmingham</city>
</player>
<player pid="p503">
<pname>Mike</pname>
<city>London</city>
</player>
</players>
<parts>
<part pno="801">
<pname>Right Gloves</pname>
<price>8.99</price>
</part>
<part pno="901">
<pname>Left Gloves</pname>
<price>9.99</price>
</part>
<part pno="851">
<pname>Left Pad</pname>
<price>33.00</price>
</part>
<part pno="951">
<pname>Right Pad</pname>
<price>43.00</price>
</part>
</parts>
<orders>
<order ono="61" playerNum="p501" team="t200" >
<kits>
<kit>
<pNum>801</pNum>
<qty>11</qty>
</kit>
</kits>
</order>
<order ono="62" playerNum="p501" team="t100" >
<kits>
<kit>
<pNum>901</pNum>
<qty>12</qty>
</kit>
</kits>
</order>
<order ono="63" playerNum="p502" team="t300" >
<kits>
<kit>
<pNum>851</pNum>
<qty>9</qty>
</kit>
</kits>
</order>
<order ono="64" playerNum="p503" team="t300" >
<kits>
<kit>
<pNum>951</pNum>
<qty>16</qty>
</kit>
</kits>
</order>
<order ono="65" playerNum="p503" team="t200" >
<kits>
<kit>
<pNum>801</pNum>
<qty>12</qty>
</kit>
<kit>
<pNum>901</pNum>
<qty>16</qty>
</kit>
<kit>
<pNum>851</pNum>
<qty>13</qty>
</kit>
</kits>
</order>
</orders>
</sports>
запрос, который я пытаюсь запустить, чтобы получить общую оценку для определенного порядка (скажем, порядка 65). Запрос в Basex является:
let $d:=doc("sports.xml")
let $o:=$d/sports/orders/order[@ono=65]
let $p:=$d/sports/parts/part
for $k in $o/kits/kit
return <OrderCost>
({$k/qty})*({$p[@pno=$k/pNum]/price})
</OrderCost>
Мой выход:
<OrderCost>
(<qty>12</qty>)*(<price>8.99</price>)
</OrderCost>
<OrderCost>
(<qty>16</qty>)*(<price>9.99</price>)
</OrderCost>
<OrderCost>
(<qty>13</qty>)*(<price>33.00</price>)
</OrderCost>
Я не могу умножить количество с соответствующей ценой, а затем получить сумму. Что я здесь делаю неправильно?
Спасибо Jens, который работал. Однако существует ли такое ограничение для функции sum(). Когда я изменяю свой код, чтобы получить сумму всех цен, вместо суммы всего элемента «сумма» печатается. – xs2dhillon
Вот модифицированный код: ** let $ d: = doc ("sports.xml") let $ o: = $ d/sports/orders/order [@ ono = 65] let $ p: = $ d/спорт/части/часть за $ к в $ O/комплекты/комплект возврата сумму ({$ к/кол-во * $ р [@ ПНО = $ к/pNum] цена /}) ** и ниже о/р: ** сумма (107,88) сумма (159,84) сумма (429) ** –
xs2dhillon
Как вы хотите, чтобы 'sum()' оценивалась, она также должна быть в фигурных скобках. –