0

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

4

1 回答 1

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.
于 2012-10-31T10:17:39.520 回答