检索文本值并将其用作xquery中函数的参数

时间:2012-10-31 05:45:43

标签: pattern-matching xquery

我希望将XQuery的matches函数用于XML文档中特定元素的值,该文档将2个字符串作为参数。我需要将元素的文本值作为参数传递给函数。但是当我使用$ title / text()时,它不接受它作为字符串并给出错误

1 个答案:

答案 0 :(得分:1)

我猜(由于缺乏更多信息......)你打算做以下事情:

let $doc := <doc>
  <title>Abc</title>
  <title>Cde</title>
  </doc>
for $title in $doc/title
return matches($title, "Cde")

我想你做了类似的事情:

let $doc := <doc>
  <title>Abc</title>
  <title>Cde</title>
  </doc>
        (: oh no! :)
let $title := $doc/title
return matches($title, "Cde") 

这会导致$title变量包含一系列两个 text()个项目;但由于fn:contains()仅接受xs:string?而不接受xs:string+的论据,因此会失败,抱怨(例如在BaseX中):

[XPTY0004] Single item expected, (<title>...</title>, <title>...</title>) found.