>_ IzzyLab

Практическое задание

Измени значение узла

средне

В /root/catalog.xml цена книги b1 устарела. Прямо в файле измени её price на 99 (файл должен остаться корректным XML, остальные книги — без изменений).

Что потренируешь:
  • xmlstarlet
  • xpath
  • редактирование xml
  • in-place
  • предикаты

Разбор темы

xmlstarlet умеет не только читать, но и редактировать XML — за это отвечает подкоманда ed (edit), которая применяет к дереву действия: обновление значения узла задают операцией update с указанием XPath и нового значения. По умолчанию результат печатается в stdout, а чтобы переписать файл на месте, есть отдельный флаг in-place. Задача учит адресовать конкретный узел предикатом по атрибуту и менять его значение структурно, не ломая остальной XML грубой заменой текста.

Что проверяется

  1. цена b1 обновлена на 99
  2. остальное не сломано

Как это выглядит