在下面的代码中,$ y返回一个看起来像“OK HL DJ FJJ FJ”等的属性值。$ l返回看起来像“OK”“HL”的属性值。我的想法是,我想知道$ l是否包含在$ y内,如果是,则将其打印出来。所以真正的第三行代码/ country /是我感到困惑的地方。我不知道如何在那里包含一个功能来完成我所描述的功能。
let $g := doc("cars.xml")/cars/honda[@id="hondaCivic"]
let $y := ($g/@type)
for $l in doc("cars.xml")/cars/country/[@car_code]????
return $y
答案 0 :(得分:3)
以下标记了以空格分隔的代码字符串,并在结果序列中选择所有带有代码的国家/地区:
let $cars := doc('cars.xml')/cars
let $type := $cars/honda[@id eq 'hondaCivic']/@type
let $codes := tokenize($type, '\s+')
return
$cars/country[@car_code = $codes]
通常使用XML结构来表示结构化信息是个好主意,例如使用可重复的type
元素独立地表示每个代码,而不是使用包含值列表的字符串。