我有以下XML文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Manufacture>
<Fabrics>
<Fabric fid="123456-1234" name="bmw"/>
<Fabric fid="123456-2344" name="audi"/>
<Fabric fid="123456-3454" name="fiat"/>
</Fabrics>
<Sections>
<Section sectionID="1" fabricID="123456-1234" />
<Section sectionID="2" fabricID="123456-2344" />
<Section sectionID="3" fabricID="123456-1234" />
<Section sectionID="4" fabricID="123456-3454" />
</Sections>
<Cars>
<Car carID="1" section="1"/>
<Car carID="2" section="3"/>
<Car carID="3" section="2"/>
<Car carID="4" section="4"/>
<Car carID="5" section="3"/>
<Car carID="6" section="2"/>
<Car carID="7" section="3"/>
<Car carID="8" section="1"/>
</Cars>
</Manufacture>
我如何实现以下目标:
显示每种面料的汽车总数!?
即:
<result fid="123456-1234" name="bmw" total="5"></result>
<result fid="123456-2344" name="audi" total="2"></result>
<result fid="123456-3454" name="fiat" total="1"></result>
Fabric标签中的fid与Section标签中的fabricID相关,其sectionID与Car标签中的section相关 感谢任何帮助:)
答案 0 :(得分:2)
你可以这样做......
<强> data.xml中强>
<Manufacture>
<Fabrics>
<Fabric fid="123456-1234" name="bmw"/>
<Fabric fid="123456-2344" name="audi"/>
<Fabric fid="123456-3454" name="fiat"/>
</Fabrics>
<Sections>
<Section sectionID="1" fabricID="123456-1234" />
<Section sectionID="2" fabricID="123456-2344" />
<Section sectionID="3" fabricID="123456-1234" />
<Section sectionID="4" fabricID="123456-3454" />
</Sections>
<Cars>
<Car carID="1" section="1"/>
<Car carID="2" section="3"/>
<Car carID="3" section="2"/>
<Car carID="4" section="4"/>
<Car carID="5" section="3"/>
<Car carID="6" section="2"/>
<Car carID="7" section="3"/>
<Car carID="8" section="1"/>
</Cars>
</Manufacture>
<强>的XQuery 强>
let $doc := doc('data.xml')/Manufacture
for $fabric in $doc/Fabrics/Fabric
return
<result total="{count($doc/Cars/Car[@section=$doc/Sections/Section[@fabricID=$fabric/@fid]/@sectionID])}">
{$fabric/@*}
</result>
<强>结果
<result total="5" fid="123456-1234" name="bmw"/>
<result total="2" fid="123456-2344" name="audi"/>
<result total="1" fid="123456-3454" name="fiat"/>