Обновить значение тега в соответствии с именем атрибута xmlstarlet

У меня есть файл:

<?xml version="1.0"?>
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
  <theme>
    <name>YYYY</name>
    <titleLayout>XXXX</titleLayout>
    <font place="ActiveWindow">
      <name>ZZZZ</name>
      <size>8</size>
    </font>
  </theme>
</openbox_config>

Я могу изменить стоимость <name> а также <titleLayout> с помощью этой команды:

xmlstarlet ed -L -N a="http://openbox.org/3.4/rc" -u /a:openbox_config/a:theme/a:name -v YYYY test.xml

xmlstarlet ed -L -N a="http://openbox.org/3.4/rc" -u /a:openbox_config/a:theme/a:titleLayout -v XXXX test.xml

Но я не могу изменить значение <name> & <size> под <font place="ActiveWindow">. Я пробовал это, но это не сработало:

xmlstarlet ed -L -N a="http://openbox.org/3.4/rc" -u /a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name -v AAAA test.xml

Любая помощь?

1 ответ

Решение

Цитируйте свой путь, чтобы предотвратить bash от интерпретации содержания:

xmlstarlet ed -L -N a="http://openbox.org/3.4/rc" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' -v AAAA test.xml
Другие вопросы по тегам