2015-03-06 2 views
0

Я пытаюсь обновить узел в файле XML, используя следующий XQuery (в Exide):Обновление файла XML с XQuery Issue

xquery version "3.0"; 

let $update := doc('db/apps/xmlFiles/Customers.xml')//Customers[ID = 6] 
return replace value of node $update/LastName with 'Morris' 

, но я получаю эту ошибку, которая не позволяет мне выполнения запроса:

Обнаружена ошибка при выполнении выражения: org.exist.xquery.XPathException: ERR: XPST0003 неожиданный маркер: значение [в строке 4, столбец 16]

кто-нибудь знает белый может быть проблема с этим? Любая помощь и советы были бы оценены

+0

Вы ищете клиента с этим ID? Если это так, это будет '// Customers [ID = 6]'. Если ребенок, // Клиенты/* [ID = 6] ' –

+0

В качестве заметки на будущее - любое редактирование, удаляющее так много информации, чтобы сделать ранее заданные ответы неприменимыми, считается плохой формой/не кошерным здесь. Когда такое редактирование является подходящим (вместо того, чтобы задавать новый, отдельный вопрос, который чаще всего правилен), это должно быть сделано путем добавления дополнительной информации, но оставление старой информации на месте. –

+0

В любом случае - теперь, когда вы внесли исправления, я предположил, что ваша новая ошибка одна, я не могу реплицировать реализацию BaseX XQUF (отлично работает там), поэтому мне нужно будет отдать предпочтение кому-то знакомому с eXist. –

ответ

0

Как уже упоминалось @dirkk, eXist не поддерживает XQUF 1.0, вместо этого он реализует раннюю версию версии XQUF. Тем не менее, вы все еще можете делать то, что вы хотите с этим кодом:

xquery version "3.0"; 

let $update := doc('db/apps/xmlFiles/Customers.xml')//Customers[ID = 6] 
return 
    update value $update/LastName with 'Morris' 

Обратите внимание, что в Exist обновления применяется сразу на месте к узлу в базе данных, в отличие от XQUF 1,0, где ПУЛ (В ожидании обновления Список) создается, а затем применяется, когда запрос завершается.

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