Замена узла новым узлом
Операция замены узла замещает обрабатываемый узел и всё его содержимое новым узлом, который задается в качестве параметра операции. Если рассматривать документ в виде дерева, то можно говорить о том, что в данной операции происходит замещение новым поддеревом целого поддерева, корнем которого служит обрабатываемый узел.
Обработчик для замены узла новым узлом во многом напоминает рассмотренные ранее обработчики для вставки узла с тем упрощением, что теперь обрабатываемый узел node полностью игнорируется, и возвращаемым значением обработчика является новый узел new-node:
(define (replace new-node) (lambda (node) new-node))
Пример 3
Запрос на замену узла новым узлом на языке модификаций, разработанном в [], имеет следующий вид:
UPDATE REPLACE //job[.="bit banger"] WITH <profession>Comp. Scientist</profession>
С помощью предлагаемой в данной статье идеи обработчиков эквивалентный результат достигается на Scheme так:
(sxml:modify `("//job[.='bit banger']" ,(replace '(profession "Comp. Scientist"))))