1

我需要搜索那些" "属性中有空格的元素。

例如:

<unit href="http:xxxx/unit/2 ">

假设上面的代码在 href 属性的最后一个空格。

我已经使用FLOWER查询完成了这项工作。但我需要使用 CTS 函数来完成此操作。请建议。

对于FLOWER查询,我试过这个:

let $x := (
  for $d in doc()
  order by $d//id
  return            
   for $attribute in data($d//@href)
   return                
   if (fn:contains($attribute," ")) then 
     <td>{(concat( "id = " , $d//id) ,",  data =", $attribute)}</td> 
   else ()
)
return <tr>{$x}</tr>

这工作正常。

因为CTS我试过

let $query := 
  cts:element-attribute-value-query(xs:QName("methodology"), 
                                    xs:QName("href"), 
                                    xs:string(" "),
                                    "wildcarded")                  
let $search := cts:search(doc(), $query)    
return fn:count($search)
4

1 回答 1

2

您的查询正在寻找“”作为属性值的全部。如果要查找包含空格的属性,则需要使用通配符。但是,由于除了精确值查询(根据定义不是通配符)之外没有空白索引,因此您不会获得对该查询的大量索引支持,因此您需要将其作为过滤搜索运行(你在上面的代码中有)有很多误报。

您最好在属性上创建一个字符串范围索引并对其进行值匹配。

于 2018-01-19T15:27:45.890 回答