Html eXide比萨饼 奶油培根酱 8.45 硅 巴巴多斯 9.25 硅 美食家 7.95 不 博洛涅萨 10.45 硅
我需要说这句话: Ofreemos“pizza counting”pizzas desde“最低价格”(“最便宜的比萨饼名称”)。只考虑可用的比萨饼(它们在disponable元素中包含值“si”) 结果必须是“Ofreemos 3比萨饼8.45欧元(卡博纳拉)” 我尝试了以下代码:Html eXide比萨饼 奶油培根酱 8.45 硅 巴巴多斯 9.25 硅 美食家 7.95 不 博洛涅萨 10.45 硅,html,xpath,xquery,Html,Xpath,Xquery,我需要说这句话: Ofreemos“pizza counting”pizzas desde“最低价格”(“最便宜的比萨饼名称”)。只考虑可用的比萨饼(它们在disponable元素中包含值“si”) 结果必须是“Ofreemos 3比萨饼8.45欧元(卡博纳拉)” 我尝试了以下代码: <pizzeria> <pizzas> <pizza id="p001"> <nombre>Carbonara<
<pizzeria>
<pizzas>
<pizza id="p001">
<nombre>Carbonara</nombre>
<precio>8.45</precio>
<disponible>si</disponible>
</pizza>
<pizza id="p002">
<nombre>Barbacoa</nombre>
<precio>9.25</precio>
<disponible>si</disponible>
</pizza>
<pizza id="p003">
<nombre>Gourmet</nombre>
<precio>7.95</precio>
<disponible>no</disponible>
</pizza>
<pizza id="p004">
<nombre>Boloñesa</nombre>
<precio>10.45</precio>
<disponible>si</disponible>
</pizza>
</pizzas>
</pizzeria>
{let$i:=min(doc(“/db/exercise/pizzeria.xml”)//pizzas/pizzas/precio)
对于文档中的$e(“/db/exercise/pizzeria.xml”)//pizzas
其中$e/pizza/precio=$i
返回
(
Ofreemos{count($e/pizza[disponible=“si”])}pizzas desde{min($e/pizza[.//disponible=“si”]/precio)}€({$e/pizza[.//disponible=“si”]/nombre/text()
)
}
遗憾的是,它不起作用。
如果你想帮助我,请用最简单的答案回答。我是新来的,对此不太了解。
<table>
{let $i:=min(doc("/db/exercise/pizzeria.xml")//pizzas/pizza/precio)
for $e in doc("/db/exercise/pizzeria.xml")//pizzas
where $e/pizza/precio=$i
return
(<caption>
Ofrecemos {count($e/pizza[disponible="si"])} pizzas desde {min($e/pizza[.//disponible="si"]/precio)}€ ({$e/pizza[.//disponible="si"]/nombre/text()})
</caption>)
}
</table>
{
let$h:=/pizzeria/pizzas/pizzas[disponible=“si”]
设$i:=min($h/precio)
设$j:=($h[precio=$i]/nombre)[1]
让$k:=计数($h)
返回
concat(“Ofrecemos”、$k、$desde比萨”、$i、“€”、$j)
}
拨弄
进行了修改以选择一个名称,以防发现多个比萨饼具有相同的最低值
===========================
对于您的xquery:
让$i:=min(//pizzas/pizzas/precio)
指向7.95对于//pizzas中的$e
返回
元素对于//pizzas中的$e,其中$e/pizza/precio=$i
where子句始终为true,并将返回包含
元素的父
元素<caption>
{
let $h := /pizzeria/pizzas/pizza[disponible = "si"]
let $i := min($h/precio)
let $j := ($h[precio = $i]/nombre)[1]
let $k := count($h)
return
concat("Ofrecemos ", $k, " pizzas desde ", $i, "€ ", $j)
}
</caption>
输出:
“Ofreemos 3 pizzas desde 8.45欧元(Carbonara)”
你能告诉我哪一个是我的错误吗?你在嘲笑我吗?@BL???不,不知道你为什么这么想。请看更新。我不明白你说的“where子句总是正确的”是什么意思。我在一个类似的练习中试过,效果很好。。。
concat('"Ofrecemos ',count(//pizza[disponible[.="si"]])," pizzas desde ",//precio[following-sibling::disponible[.="si"]][not(.>//precio[following-sibling::disponible[.="si"]])]/text(),"€(",//precio[following-sibling::disponible[.="si"]][not(.>//precio[following-sibling::disponible[.="si"]])]/preceding-sibling::*[1]/text(),')"')