Xquery Как извлечь отличительные термины из набора узлов xml в наборе записей xml?

Предположим, у нас есть набор записей xml. Каждая запись имеет <paragraph> pla pla pla </paragraph>. Как извлечь distinctive-terms из всех абзацев всех записей? Не из каждого абзаца отдельно. Следующий код извлекает distinctive-terms из каждого абзаца отдельно.

 for $record in /rec:Record 


 for $record in /rec:Record 
 let $distinct-terms:= cts:distinctive-terms(<info>{$record/rec:paragraph } </info> ,<options xmlns="cts:distinctive-terms"><max-terms>10</max-terms></options>)//cts:text/string()
 return 
 $distinct-terms

Результат, который мне нужен, — это distinctive-terms, представляющий все абзацы во всех записях Не для каждой записи в отдельности.


person s.e    schedule 12.07.2016    source источник


Ответы (1)


Переместите цикл внутрь вызова функции:

cts:distinctive-terms(/rec:Record/<info>{./rec:paragraph}</info>)
person mholstege    schedule 12.07.2016
comment
Что означает оператор точки, за которым следует оператор косой черты ./ в {./rec:paragraph}? - person s.e; 12.07.2016
comment
Это сокращение для текущего узла контекста. В этом случае /rec:Record/ перебирает все корневые элементы rec:Record, а <info>{./rec:paragraph}</info> оценивается для каждого. Таким образом, в основном, . относится к rec:Record here.. - person grtjn; 12.07.2016
comment
Кстати: ./ тоже можно опустить - person Christian Grün; 15.07.2016