Как добавить атрибут в 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/