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