XQuery: токенизиране на текст при запазване на тагове

Разгледайте следния код на XQuery:

let $foo := <root>This is a <tag>test</tag>. This is <tag>only</tag> a <tag>test</tag>.</root>
for $s in tokenize($foo, "\. ")
return <sentence>{$s}</sentence>

Той връща $foo разделен (много наивно) на изречения, но също така премахва етикетите, съдържащи се в $foo:

<sentence>this is a test.</sentence>
<sentence>this is only a test.</sentence>

Да предположим, че искам да разделя $foo на изречения, като същевременно запазя вградените тагове, давайки резултат, който изглежда по следния начин:

<sentence>this is a <tag>test</tag>.</sentence>
<sentence>this is <tag>only</tag> a <tag>test</tag>.</sentence>

Как да подходя към този проблем?


person Leah Velleman    schedule 04.09.2015    source източник


Отговори (1)


Надявам се, че е това, което търсите:

let $foo := <root>This is a <tag>test</tag>. This is <tag>only</tag> a <tag>test</tag>.</root>
for $s in tokenize(xdmp:quote($foo/node()), "\. ")
return xdmp:unquote("<sentence>"||$s||"</sentence>")
person Nik    schedule 05.09.2015