检查Xquery中是否存在子字符串

时间:2013-04-16 01:16:13

标签: xml xquery

我有一个XML文档,其中包含关键字属性

<Books>

    <Book name="Steve Jobs" type="biography" keywords="biography technology apple">

        <Authors>

            <Author>
...

我想找到所有带有关键字“传记”的“书籍”。我找不到在字符串中搜索的方法。如何处理这个?

3 个答案:

答案 0 :(得分:1)

以下XQuery返回所有具有“传记”的Book元素。在关键字集合中,由空格分隔(序列由tokenize构建,分隔符是空格)

doc('yourdoc')//Book['biography' = tokenize(@keywords, '\s')]

答案 1 :(得分:1)

您也可以使用:

  1. //预订[包含(@keywords,'传记')] - 或
  2. //预订[starts-with(@keywords,'传记')]

答案 2 :(得分:0)

可以使用此XPath 1.0表达式,这可能比执行标记化更有效

/*/Book[contains(concat(' ', @keywords, ' '), ' biography ')]