我有一个描述汽车市场的 XML 文档。汽车市场是停车场的集合。每个停车场都有很多车。每辆车都属于一个类别——新的/二手的/租的。该文档如下所示:
<car_mart>
<parking>
<cars>
<car cat="new">
<licence>1PYV582</licence>
<price>1000</price>
</car>
<car cat="new">
<licence>6GD5489</licence>
<price>2200</price>
</car>
<car cat="rent">
<rental>20</rental>
</car>
<car cat="new">
<licence>5FN1254</licence>
<price>1500</price>
</car>
<car cat="rent">
<rental>25</rental>
</car>
<car cat="new">
<licence>6HB4524</licence>
<price>5800</price>
</car>
<car cat="rent">
<rental>10</rental>
</car>
</cars>
</parking>
<parking>
<cars>
<car cat="used">
<licence>8UA1294</licence>
<price>800</price>
</car>
</cars>
</parking>
<!--<parking>
...
<parking>-->
<cat tag="new">
<cat_name>New</cat_name>
</cat>
<cat tag="used">
<cat_name>Used</cat_name>
</cat>
<cat tag="rent">
<cat_name>Rent</cat_name>
</cat>
</car_mart>
我想使用 XQuery 提取信息。结果应如下所示:
<cat id="new" total_cost="10500">
<cat_name>New</cat_name>
<car price="1000"/>
<car price="2200"/>
<car price="1500"/>
<car price="5800"/>
</cat>
<cat id="used" total_cost="800">
<cat_name>Used</cat_name>
<car price="800"/>
</cat>
<cat id="rent" total_cost="55">
<cat_name>Rent</cat_name>
</cat>
直到现在,我才来到这篇 XQuery (3.0)。输出显然不正确。
<car_list>{
for $cat in /car_mart/cat
return
<cat id="{$cat/@tag}" total_cost="{sum(/car_mart/parking/cars/car/cost)}">
{$cat/cat_name}
{for $car in /car_mart/parking/cars/car
return
if($car/[@cat=$cat/@tag])
then <car price="{$car/price}"></car>
else ()
}
</cat>
}</car_list>
我看到两个我不知道如何解决的主要问题:
在一个类别中,仅应列出该类别的汽车(现在,所有汽车都应列出)
计算该类别的总和
非常感谢