Для обновления данных нужно использовать раздел before для определения обновляемых данных, и раздел after для определения конечных значений данных.
Давайте разберем пример:
<?xml version="1.0" encoding="windows-1251"?><ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema="upd_schema.xml"> <updg:before> <Авторы Имя="alex" Фамилия="shirshov" Идентификатор="123-15-3452" updg:id="for_update"/> </updg:before> <updg:after> <Авторы Имя="Алексей" Фамилия="Ширшов" Идентификатор="123-15-3452" updg:id="for_update"/> <Авторы Имя="alex" Фамилия="shirshov" Идентификатор="123-15-3453" updg:id="for_insert"/> </updg:after> </updg:sync></ROOT> |
Работает он так: сначала находится запись, однозначно идентифицируемая в разделе before (ее мы вставили в предыдущем примере). Этой записи, с помощью атрибута id, присваивается идентификатор. Зачем он нужен? Так как в разделе after мы указали две записи, то возникает неоднозначность: одну из них нужно использовать для вставки, а другую для обновления. Чтобы эту неоднозначность разрешить, в разделе after присутствует ссылка на найденную в разделе before запись посредством атрибута id. В результате выполнения шаблона будут исправлены имя и фамилия в записи с идентификатором 123-15-3452, а также добавлена новая запись.
|
|
Удаление
Это совсем тривиальная задача, главное помнить, что в разделе before запись должна однозначно определяться.
<?xml version="1.0" encoding="windows-1251"?><ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema="upd_schema.xml"> <updg:before> <Авторы Имя="alex" Фамилия="shirshov" Идентификатор="123-15-3453"/> </updg:before> </updg:sync></ROOT> |
В этом примере будет удалена запись с идентификатором 123-15-3453.
ПРИМЕЧАНИЕ Атрибуты «Имя» и «Фамилия» приведены здесь для того, чтобы вам проще было понять, какая строка удаляется. Так как идентификатор уникально определяет запись, их можно было не указывать. |
Более подробную информацию об апдейтаграммах с примерами можно найти в MSDN или в [10].