Html eXide比萨饼 奶油培根酱 8.45 硅 巴巴多斯 9.25 硅 美食家 7.95 不 博洛涅萨 10.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<

我需要说这句话: Ofreemos“pizza counting”pizzas desde“最低价格”(“最便宜的比萨饼名称”)。只考虑可用的比萨饼(它们在disponable元素中包含值“si”)

结果必须是“Ofreemos 3比萨饼8.45欧元(卡博纳拉)”

我尝试了以下代码:

<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,并将返回包含
    元素的父
    元素
  • 您的版本已修改:
  • XPath 1.0解决方案:

    <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(),')"')