是xml文件 -
<Countries>
<Country>
<Name>India</Name>
<Capital>New Delhi</Capital>
</Country>
<Country>
<Name>USA</Name>
<Capital>Washington DC</Capital>
</Country>
<Country>
<Name>England</Name>
<Capital>London</Capital>
</Country>
<Country>
<Name>Japan</Name>
<Capital>Tokyo</Capital>
</Country>
<Country>
<Name>Srilanka</Name>
<Capital>Colombo</Capital>
</Country>
</Countries>
我已将其存储在BaseX(XMLDB)中。现在像普通数据库一样,如果我存储在那里,我会编写简单的select
语句来从表中检索数据。例如:
select name, capital from country
并获得两行。对?如何使用XQuery完成?
答案 0 :(得分:1)
在关系数据库(您以图形方式描述为“普通数据库”)中,每个查询都将表作为其输入,并生成一个表作为其输出。在XML数据库中,输入是XML,输出是XML。因此,您需要描述要生成的XML。完成后,您的问题的答案是肯定的:您当然可以编写一个XQuery来生成该输出。
答案 1 :(得分:1)
似乎您想要所有name
和capital
元素的序列:
/Countries/Country/(Name|Capital)
此查询产生的结果是:
<Name>India</Name>
<Capital>New Delhi</Capital>
<Name>USA</Name>
<Capital>Washington DC</Capital>
<Name>England</Name>
<Capital>London</Capital>
<Name>Japan</Name>
<Capital>Tokyo</Capital>
<Name>Srilanka</Name>
<Capital>Colombo</Capital>
答案 2 :(得分:0)
如果您期望没有元素的输出,那么试试这个
for $x in doc("Country")/Countries/Country
return string-join( ($x/Name, $x/Capital), " - ")
输出将是 -
`India - New Delhi USA - Washington DC England - London Japan - Tokyo Srilanka - Colombo`
如果你想要它们分开,那么这就是你必须使用的 -
for $x in doc("Country")/Countries/Country
return <li>{string-join( ($x/Name, $x/Capital), " - ")}</li>
您可以使用任何其他相关标记代替<li>
。