2014-09-05 1 views
0

Привет может кто-то пожалуйста, помогите мне, я не знаю, почему я получаюОбязательный тип элемента первого операнда '/' - node(); Переданное значение имеет хз Тип элемента: anyAtmonicType

«необходимый тип элемента первого операнда„/“является узел(), производимое значение имеет item type xs: anyAtmonicType ".

Я пытаюсь группировать сайты по годам.

<publications> 
    { 
    for $x in distinct-values(//www) 
    return 
    <year-Pub>{for $y in //www where $x/year = $y/year 
    return <year>{$y/*}</year>}</year-Pub> 
    } 
    </publications> 
+0

Пожалуйста, не копируйте код и сообщения, введя их, вместо этого используйте copy & paste (в сообщении об ошибке есть опечатка). В вашем вопросе отсутствует основная информация. Пожалуйста, прочитайте [FAQ] и [ask], и особенно [как отправить SSCCE] (http://www.sscce.org). –

ответ

1

distinct-values(...) возвращает последовательность xs:anyAtomicType значений, например. строки или числа, но никогда не узлы XML (node()). При запуске последовательности узлов XML (которая возвращает //www), fn:data(...) неявно вызывается для каждого узла, чтобы преобразовать его в атомное значение.

В строке for $y in //www where $x/year = $y/year вы хотите выполнить шаг оси начиная с $x, что впоследствии невозможно.

Как вы не давали никакого ввода или описание того, что именно вы хотите достичь, я не могу помочь вам с работой и протестированным решением, но в качестве краткого очерка, чтобы иметь дело с различными узлами:

  • Выбирайте определенные значения, как и раньше (и убедитесь, что они содержат то, на что вы нацелились). Наверное, вам нужно distinct-values(//www/year).
  • Теперь сверните все узлы, и во время сравнения помните, что переменная уже содержит атомное значение, а не элемент.
2

Я подозреваю, что вы хотите

<publications> 
    { 
    for $x in distinct-values(//www/year) 
    return 
    <year-Pub>{for $y in //www[year = $x] 
       return <year>{$y/*}</year>}</year-Pub> 
    } 
</publications> 

В качестве альтернативы смотреть на "группе" в XQuery 3.0.

+0

Спасибо за вашу помощь, к сожалению, я не могу использовать Xquery 3.0 на этом этапе – user2998504

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