Source XML
<xml>
<block>
<el name="a">92346</el>
<el name="b">lorem</el>
</block>
<block>
<el name="a">89753</el>
<el name="b">ipsum</el>
</block>
</xml>
Object
I would like to insert an <el name="c">0</el>
element in every <block>
with a Linux shell script:
<xml>
<block>
<el name="a">92346</el>
<el name="b">lorem</el>
<el name="c">0</el>
</block>
<block>
<el name="a">89753</el>
<el name="b">ipsum</el>
<el name="c">0</el>
</block>
</xml>
I can append the elements using XmlStarlet:
xmlstarlet ed -a '/xml/block/el[@name="b"]' \
--type 'elem' -n 'el' -v 0
Questions
- What is the XPath expression that selects every
<el>
element which doesn't have aname
attribute? - Can I append the elements and insert the attributes with a single
xml ed
command?