У меня есть file.xml хранящий протоколы, структура которых следующее:обновления Запись в XML-файл с помощью XQuery и Basex
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<economato>
<protocollo>
<numero>1</numero>
<data>2014-12-15</data>
<oggetto>Trasmissione prospetti di rendiconto chiusura esercizio 2012 - beni mobili proprietà dello stato</oggetto>
<destinatario>Ragioneria Provinciale Como</destinatario>
<operatore>MAESTRI</operatore>
<valido>true</valido>
</protocollo>
...
</economato>
и я должен был бы изменить/обновить значение тега «valido», например, от «true» до «false» в протоколе номер 1, и я хотел бы, чтобы это обновление было записано в файл. Как я использую Basex, следуя документации, которую я попытался написать этот запрос:
xquery let $update := doc('C:\Users\Lorenzo Enzino Vinci\Desktop\ECONOMATO\databases\2014.xml')//economato/protocollo[numero = 1] return replace value of node $update/valido with 'false' into doc('C:\Users\Lorenzo Enzino Vinci\Desktop\ECONOMATO\databases\2014.xml')//economato
, но я получаю сообщение об ошибке, как
[XPST0003] Unexpected end of query: 'into doc('C:\Users\Lorenzo Enzino Vinci\Desktop\ECONOMATO\databases\2014.xml')//economato'
Так что мой запрос неправильно, но я не знаю, где. Вы можете мне помочь?
Спасибо. Теперь это яснее. Еще один вопрос: я должен отправить этот запрос через BaseXClient.java в моем приложении Java. Как я могу активировать опцию -u из java-кода? –
Я думаю, что мы должны использовать команду «SET WRITEBACK true» –
Правильно, как объясняется в разделе wiki, с которым я связан. – dirkk