我终于使用不同的匹配类型解决了这个问题:
<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>
这样,这只会匹配逗号分隔列表中的完整值。