Xquery Replace函数表示找到了项目预期序列

Xquery Replace函数表示找到了项目预期序列,xquery,xslt-2.0,Xquery,Xslt 2.0,我有如下所示的源XML,我使用except函数提取标题文本和所有子元素字符串(unwantedtag内容除外)。当我尝试使用replace函数在标题末尾添加点时。我收到一个错误,表示找到了项目预期序列。有人能帮我解释为什么会出现这个错误以及如何解决这个问题吗: 示例XML: <test> <title>sample <i>title</i><sup>*</sup> <unwantedcontent>

我有如下所示的源XML,我使用except函数提取标题文本和所有子元素字符串(unwantedtag内容除外)。当我尝试使用replace函数在标题末尾添加点时。我收到一个错误,表示找到了项目预期序列。有人能帮我解释为什么会出现这个错误以及如何解决这个问题吗:

示例XML:

<test>
<title>sample <i>title</i><sup>*</sup> 
    <unwantedcontent>
        <p>unwanted text.</p>
    </unwantedcontent>
</title>
<p2>sampletest2</p2>
</test>
$s1的值将包括三个文本节点sample、title、*以及可能的两个纯空白文本节点,具体取决于源文档的解析方式。我认为您可能希望在添加..之前连接这些文本节点,并可能修剪尾部空白。。这将是

let $s2 := replace(normalize-space(string-join($s1, '')), "(.*)([^.])$", "$1$2.")

太棒了@Micheal Kay,这正是我想让string join在这里变魔术的地方。非常感谢。很高兴它能起作用。StackOverflow的惯例是,如果答案有效,您不需要说谢谢,而是应该勾选答案旁边的复选框,将其标记为已接受。
let $s2 := replace(normalize-space(string-join($s1, '')), "(.*)([^.])$", "$1$2.")