像许多人一样,我正在处理 XML 上的 Mondial 数据库。如果 XQuery 语法没有尽最大努力进行破坏,那将是小菜一碟。
let $inland := //province/@id
where every $sea in //sea satisfies
$sea/located/@province != $inland
return $inland
Run Code Online (Sandbox Code Playgroud)
我在上面要做的是找到所有“内陆”省份,即旁边没有海的省份。然而,这是行不通的,因为 $sea/located/province 是一个大字符串,每个省份都与它接壤。
所以我试着修改成。
let $inland := //province/@id
where every $sea in //sea satisfies
not(contains($sea/located/@province, $inland))
return $inland
Run Code Online (Sandbox Code Playgroud)
我希望它只找到属于海洋接壤省份一部分的省份。简单明了。
错误信息:
Stopped at C:/Users/saffekaffe/Desktop/mondial/xml/country_without_island.xml, 2/1:
[XPTY0004] Item expected, sequence found: (attribute id {"prov-Greece-2"},....
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
//sea/located/province@示例
province="prov-France-5 prov-France-20 prov-France-89 prov-France-99"
Run Code Online (Sandbox Code Playgroud)
//province/@id 示例
id="prov-Greece-2"
Run Code Online (Sandbox Code Playgroud)