Я работаю над небольшим проектом для школы.Этот проект просит меня показать, что я способен использовать различные методы обработки XML.Теперь в моем проекте я работаю с менеджером баз данных Sedna, в котором я храню пользовательские записи, и я хотел бы обновить некоторые из этих пользовательских записей через XQuery (я использую PHP API для отправки запросов к базе данных через PHP Api, предоставленныйкоманда разработчиков Sedna).Представьте, что у меня есть следующее содержимое базы данных для записей пользователей:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="admin" admin="true">
<email>admin@admin.com</email>
<password>123456789</password>
<firstname>The</firstname>
<lastname>Stig</lastname>
<gender>male</gender>
<subscriptions>
</subscriptions>
</user>
<user id="prosper" admin="false">
<email>prosper@localhost.com</email>
<password>123456789</password>
<firstname>Strange</firstname>
<lastname>Figure</lastname>
<gender>male</gender>
<subscriptions>
</subscriptions>
</user>
</users>
Теперь я собираюсь обновить, например, запись пользователя prosper.В этой записи я хотел бы, например, изменить свое имя и адрес электронной почты, но оставив остальные без изменений.Я попытался использовать следующий запрос, но после отправки запроса он меняет порядок документа пользовательской записи по какой-то причине, которую я не понимаю (я думаю, что он вставляет узлы атрибутов пользовательской записи как дочерние узлы).Это запрос, который я использую для обновления пользователя:
UPDATE replace $user in doc("users")//user[@id="prosper"]
with
<user>{($user/@*)}
<email>strange.figure@localhost.com</email>
{($user/node()[password])}
<firstname>Familiar</firstname>
<lastname>Figure</lastname>
<gender>male</gender>
{($user/node()[subscriptions])}</user>
Теперь проблема, которую вызывает этот запрос, заключается в том, что когда я пытаюсь запросить информацию о пользователе после обновления, я полагаюсь на тот же порядокДочерние узлы есть до обновления, но этот запрос меняет порядок.
Есть ли кто-то достаточно опытный, чтобы помочь мне с этой проблемой?
Я благодарю вас за ваше время.