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