gpt4 book ai didi

http - 如何在 CardDAV (WebDAV) REPORT 请求中执行高级过滤器

转载 作者:可可西里 更新时间:2023-11-01 17:11:05 26 4
gpt4 key购买 nike

我的 vcards 有一个 CATEGORIES 属性,它有一个逗号分隔的值列表。我想要的是在此逗号分隔列表中的某处获取所有具有传递值的 vcards。

我正在尝试使用过滤器执行 CardDAV REPORT 请求以完成此操作:

<C:filter test="allof"> 
<C:prop-filter name="CATEGORIES" test="allof">
<C:text-match collation="i;unicode-casemap"
match-type="contains"
>searched_value</C:text-match>
</C:prop-filter>
</C:filter>

这个过滤器的问题在于它会匹配属性中任何地方传递的值,这意味着它也会匹配另一个值中的值,例如:

如果我搜索“ friend ”,它将在“工作、 friend 、同事”和“工作、足球 friend 、同事”中匹配。

我找不到使用 WebDAV 过滤器在我的逗号分隔列表中仅获取“完整”值的方法。

最佳答案

我终于使用不同的匹配类型解决了这个问题:

<C:filter> 
<C:prop-filter name="CATEGORIES" test="anyof">
<C:text-match collation="i;unicode-casemap"
match-type="equals">value</C:text-match>
<C:text-match collation="i;unicode-casemap"
match-type="contains">,value,</C:text-match>
<C:text-match collation="i;unicode-casemap"
match-type="ends-with">,value</C:text-match>
<C:text-match collation="i;unicode-casemap"
match-type="starts-with">value,</C:text-match>
</C:prop-filter>
</C:filter>

详细信息:

如果包含的任何文本匹配匹配(逻辑或)则匹配:

<C:prop-filter name="CATEGORIES"  test="anyof"> 

此文本匹配将匹配与值完全相等的值(这是逗号分隔列表中唯一的值):

<C:text-match collation="i;unicode-casemap" 
match-type="equals">value</C:text-match>

这将匹配包含两个逗号之间的值的值(这是逗号分隔列表中间部分的值):

<C:text-match collation="i;unicode-casemap" 
match-type="contains">,value,</C:text-match>

这将匹配以逗号结尾的值,后跟值(这是逗号分隔列表最后位置的值):

<C:text-match collation="i;unicode-casemap" 
match-type="ends-with">,value</C:text-match>

这将匹配以逗号后跟值开头的值(这是逗号分隔列表第一个位置的值):

<C:text-match collation="i;unicode-casemap" 
match-type="starts-with">value,</C:text-match>

这样,这将只匹配逗号分隔列表中的完整值。

关于http - 如何在 CardDAV (WebDAV) REPORT 请求中执行高级过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14137894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com