2016-08-25 3 views
1

Я пытаюсь выполнить поиск на основе значения элемента. Это должно возвращать значение элемента и URI документа, имеющих соответствующее значение элемента. Я написал код, как показано ниже, который хорошо возвращает значение элемента. Не получить URI документа. Как получить оба.Возвращаемый URI документа после поиска элемента

xquery version "1.0-ml"; 
<results>{ 
let $x := cts:element-values(fn:QName("http://example.com/dataset","name"),(), ("frequency-order","document"), cts:query(
    <and-query xmlns="http://marklogic.com/cts"> 
    <word-query> 
     <text>paramedical</text> 
    </word-query> 
    <directory-query> 
     <uri>/dataset/</uri> 
    </directory-query> 
    </and-query> 
)) 
for $dataset in $x 
return 
(
<result> 
    <name>{$dataset}</name> 
    <reference>{cts:uris($dataset)}</reference> 
</result> 
) 
}</results> 

ответ

2

Попробуйте это:

for $tuple in cts:value-tuples(
    (
    cts:element-reference(fn:QName("http://example.com/dataset","name")), 
    cts:uri-reference() 
), 
    ("frequency-order","document"), 
    $query 
) 
return $tuple 

Вам нужно лексикон URI включен.

+0

Эта работа для меня. Спасибо за быстрый ответ. –

+0

Так как это отвечает на ваш вопрос, [пожалуйста, отметьте его как «принято»] (http://stackoverflow.com/help/accepted-answer). –

+0

У нас есть возможность вернуть только значение первого вхождения элемента имени в каждый документ. Теперь в том же документе мы имеем элемент name, который находится непосредственно под корневым элементом, а также как дочерний элемент других элементов. Он возвращает все значения имени и тот же URI в результате. –

Смежные вопросы