使用xPath我得到这样的文本:


Sed id felis mi; Nam porta lacinia sapienvestibulum egestas; Prasent nec nisl purus,emol mollis metus。 Fusce euismod ante idtellus tincidunt dignissim ornare magna blandit。 Nunc id risus quam。


我想将其分为两个变量:

var1 =从开始到第一个点的文本=>如果此部分包含10个以上的单词(由空格分隔)并且包含分号“;”,则它将从开始到第一个分号使用文本。

var2 =文本的右侧。

我从这段代码开始,但是并没有给我想要的东西(我还没有处理10个单词的条件):

let $left := data(tokenize($doc//div/blockquote/p/text(), '^(.*?)[;|.](.*?)$')[1])
let $right := data(tokenize($doc//div/blockquote/p/text(), '^(.*?)[;|.](.*?)$')[2])


提前致谢。

最佳答案

试试这个

for $p in doc('file:///c:/test.xml')//div/blockquote/p/text()
    return
        if (count(tokenize(tokenize($p,'[.]')[1],'\s+')) gt 10) then
            (tokenize($p,'[.]')[1])
        else
            (tokenize($p,';')[1])


有关参考,请参见fn:tokenize

10-08 13:06