Дополнительной помощи, которую вы собираетесь получить от XPath, нет. Чтобы добиться такого рода вещей, я бы помог приложению для редактирования. Я создал системы, в которых я добавил к узлу атрибут, указывающий, был ли он обновлен , добавлен или удален . Затем я каскадно поднимаю дерево, чтобы каждый предок был помечен как грязный (если он не помечен как одно из этих других состояний).
Чтобы опубликовать изменения, XML обрабатывается с помощью XSL, выбирая все узлы с любым таким состоянием. Узлу dirty будут скопированы его атрибуты, но будут выбраны только дочерние элементы с состоянием. В конечном итоге вы получаете XML, который содержит только измененные элементы, а состояние указывает, какое изменение необходимо применить. Если требуется управление параллелизмом, я предпочитаю использовать атрибут номера версии.