xml - XQuery 查询计数

标签 xml xquery

我是第一次学习 XQuery,并且在某个特定查询方面遇到了一些麻烦。

查找生产至少两台速度至少为 2.00 的 PC 的制造商的名字。

我已经得到了查询的 Speed<=2.00 部分,但我不太清楚如何按出现次数对其进行分组。

尝试:(不输出任何内容)

let $doc := doc("PC.xml")
for $x in $doc/Products/Maker/PC
where $x/Speed>=2.00 and count($x)>=2
return $x/../@name

PC.xml:

<Products>
    <Maker name = "A">
        <PC model = "1001" price = "2114">
            <Speed>2.66</Speed>
            <RAM>1024</RAM>
            <HardDisk>250</HardDisk>
        </PC>
        <PC model = "1002" price = "995">
            <Speed>2.10</Speed>
            <RAM>512</RAM>
            <HardDisk>250</HardDisk>
        </PC>
        <Laptop model = "2004" price = "1150">
            <Speed>2.00</Speed>
            <RAM>512</RAM>
            <HardDisk>60</HardDisk>
            <Screen>13.3</Screen>
        </Laptop>
        <Laptop model = "2005" price = "2500">
            <Speed>2.16</Speed>
            <RAM>1024</RAM>
            <HardDisk>120</HardDisk>
            <Screen>17.0</Screen>
        </Laptop>
    </Maker>
    <Maker name = "E">
        <PC model = "1011" price = "959">
            <Speed>1.86</Speed>
            <RAM>2048</RAM>
            <HardDisk>160</HardDisk>
        </PC>
        <PC model = "1012" price = "649">
            <Speed>2.80</Speed>
            <RAM>1024</RAM>
            <HardDisk>160</HardDisk>
        </PC>
        <Laptop model = "2001" price = "3673">
            <Speed>2.00</Speed>
            <RAM>2048</RAM>
            <HardDisk>240</HardDisk>
            <Screen>20.1</Screen>
        </Laptop>
        <Printer model = "3002" price = "239">
            <Color>false</Color>
            <Type>laser</Type>
        </Printer>
    </Maker>
    <Maker name = "H">
        <Printer model = "3006" price = "100">
            <Color>true</Color>
            <Type>ink-­-jet</Type>
        </Printer>
        <Printer model = "3007" price = "200">
            <Color>true</Color>
            <Type>laser</Type>
        </Printer>
    </Maker>
</Products>

最佳答案

天哪,我已经弄清楚了!

let $doc := doc("PC.xml")/Products
for $maker in $doc//Maker
where count($maker/PC[Speed >= 3.00]) >= 2
return data($maker/@name)

关于xml - XQuery 查询计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787206/

相关文章:

regex - XSLT/XQuery 正则表达式输出的行为是否依赖于实现?

java - 在java xquery处理器中使用OSB功能bea

java - 如何在oracle11g中使用dbUtils获取CLOB列?

xquery - 为什么第一个 xquery 语句有效但第二个不行

xml - TreeView 标题里面使用 js 和 python 在 odoo 8 中添加下拉菜单

python - 在x节点minidom xml python之后插入

xml - 两个大列表的高效映射

BaseX 中的 XQuery - let 语句位于文件 :write() 之外

java - 无需特定 XSD 即可验证 XML

xml - XSLT或XPath可以处理空文件吗?