首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eXide比萨饼

eXide比萨饼
EN

Stack Overflow用户
提问于 2020-05-10 18:32:40
回答 2查看 50关注 0票数 0
代码语言:javascript
复制
<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>

我需要让这个短语: Ofrecemos“比萨饼计数”比萨饼取消“最低价格”欧元(“最便宜比萨饼的名称”)。只有可用的比萨才会被考虑在内(它们包含可分解元素中的值“si”)。

其结果必须是"Ofrecemos 3 pizzas be 8.45欧元(羰基)“

我试过这个代码:

代码语言:javascript
复制
<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>

遗憾的是,它不起作用。请,如果你要帮我,试着用最简单的答案。我是新来的,对此我不太了解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-10 19:03:49

代码语言:javascript
复制
<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>

小提琴https://xqueryfiddle.liberty-development.net/bFDbxkY

做了一个修改,以选择一个名称,以防您发现多个比萨具有相同的最低值。

===========================

至于您的xquery:

  1. let $i:=min(//pizzas/pizza/precio)指向7.95.
  2. for $e in //pizzas返回<pizzas> element(s).
  3. for $e in //pizzas where $e/pizza/precio=$i,where子句始终为true,并将返回父<pizzas>元素,其中包含修改后的<pizza> elements.
  4. your版本:https://xqueryfiddle.liberty-development.net/bFDbxkY/11
票数 1
EN

Stack Overflow用户

发布于 2020-05-11 04:13:07

XPath 1.0解决方案:

代码语言:javascript
复制
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(),')"')

输出:"Ofrecemos 3 pizzas desde 8.45€(Carbonara)"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61716914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档