Как добавить атрибут в Zorba XQuery?

У меня есть XML-документы с корневым узлом под названием entity, Для каждого документа я хочу подсчитать, сколько у него узлов с именем tender и добавить его в качестве атрибута entity,

import module namespace file = "http://expath.org/ns/file";

for $file in file:list("../api/entity/p/", true(), "??????.xml")
let $doc := doc(concat("../api/entity/p/", $file))
return
    update insert attribute number_of_tenders {count($doc//tender)} into $doc/entity

Я следил за http://exist-db.org/exist/apps/doc/update_ext.xml, что не для Zorba, но я догадался, что это стандартный XQuery.

Я получаю ошибку

6,69: static error [err:XPST0003]: invalid expression: syntax error, unexpected expression (missing comma "," between expressions?)

Что я делаю неправильно?

1 ответ

Решение

Я подозреваю, что ваше обновление не подходит для Zorba. eXist реализует раннюю версию XQuery Update 1.0. Вместо этого я считаю, что Zorba правильно реализует спецификацию XQuery Update 1.0, поэтому ваше обновление должно соответствовать этому: http://www.w3.org/TR/xquery-update-10/

Возможно что-то вроде:

for $file in file:list("../api/entity/p/", true(), "??????.xml")
let $doc := doc(concat("../api/entity/p/", $file))
return
    insert node attribute number_of_tenders {count($doc//tender)} into $doc/entity

В частности, прочитайте http://www.w3.org/TR/xquery-update-10/

Другие вопросы по тегам