如何检查一个字符串是否是另一个字符串的子字符串,如果为true则打印出来(XQuery / XML)

时间:2015-05-15 05:11:06

标签: xml substring xquery xquery-sql

在下面的代码中,$ 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

1 个答案:

答案 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元素独立地表示每个代码,而不是使用包含值列表的字符串。