Язык модификации данных формата XML функциональными методами

Замена узла новым узлом


Операция замены узла замещает обрабатываемый узел и всё его содержимое новым узлом, который задается в качестве параметра операции. Если рассматривать документ в виде дерева, то можно говорить о том, что в данной операции происходит замещение новым поддеревом целого поддерева, корнем которого служит обрабатываемый узел.

Обработчик для замены узла новым узлом во многом напоминает рассмотренные ранее обработчики для вставки узла с тем упрощением, что теперь обрабатываемый узел 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"))))



Содержание раздела