Могу ли я вставить подэлемент одним вызовом XMLStarlet и при этом иметь правильное форматирование?

Я использовал отличный совет от Cellux, чтобы добавить новый элемент (с атрибутами и подэлементами) под существующий элемент в этом вопрос и столкнулся с проблемой форматирования.

Начиная с файла example.xml:

<processes>
  <process id="test"/>
</processes>

Если я использую метод Cellux для выполнения нескольких с одним вызовом xml с несколькими действиями...

xml ed -L \
  -s "/processes" -t elem -n processTMP -v "" \
  -i "/processes/processTMP" -t attr -n id -v "test2" \
  -s "/processes/processTMP" -t elem -n subproc -v "s2" \
  -r "/processes/processTMP" -v "process" \
  example.xml

результирующий файл содержит одну новую строку XML.

<processes>
  <process id="test"/>
  <process id="test2"><subproc>s2</subproc></process>
</processes>

Если я делаю несколько вызовов xml с каждым в отдельном вызове...

xml ed -L -s "/processes" -t elem -n processTMP -v "" example.xml
xml ed -L -i "/processes/processTMP" -t attr -n id -v "test2" example.xml
xml ed -L -s "/processes/processTMP" -t elem -n subproc -v "s2" example.xml
xml ed -L -r "/processes/processTMP" -v "process" example.xml

Я получаю хорошо отформатированный (с отступом) XML.

<processes>
  <process id="test"/>
  <process id="test2">
    <subproc>s2</subproc>
  </process>
</processes>

Два файла синтаксически идентичны, но я хотел бы, чтобы XML был как можно более чистым.

Кто-нибудь знает чистый способ сделать один вызов xml и при этом получить форматирование? Я знаю, что мог бы запустить его через "xml fo" в конце, но должен быть лучший способ.


person rrds    schedule 29.01.2014    source источник
comment
Я получил второй результат для обоих случаев. Что говорит xml --version?   -  person npostavs    schedule 30.01.2014
comment
1.0.2 - сервер предоставляется в качестве стартовой площадки, поэтому я не могу ничего сделать с его обновлением... но похоже, что это может быть ответом.   -  person rrds    schedule 06.02.2014