I have xml file with few item section. How i can extract data with xmllint or xmlstarlet tool.
I want get an /all/item/environment/os/vendor,name,version fields, but if /all/item/identifier=5555
I can find and output /all/item/identifier
xmlstarlet sel -t -v "/all/item/identifier[text() = '5555']"
but how output vendor,name,version for selected identifier?
i expect something like this 5555 vname1 vname1 123
sample xml below
<?xml version="1.0" encoding="utf-8"?>
<all>
...
<item>
<identifier>5555</identifier>
<name>Name</name>
<description>desc</description>
<i_software>
<soft>
<vendor>vname1</vendor>
<name>vname1</name>
<version>123</version>
<types>
<type>Something text</type>
</types>
</soft>
<soft>
<vendor>vname2</vendor>
<name>vname2</name>
<version>123</version>
<types>
<type>Something text</type>
</types>
</soft>
</i_software>
<environment>
<os>
<vendor>vname1</vendor>
<name>vname1</name>
<version>123</version>
</os>
<os>
<vendor>vname1</vendor>
<name>vname1</name>
<version>123</version>
</os>
</environment>
<qwe>
<identifier>7777</identifier>
</qwe>
<idate>01.01.2099</idate>
<identifiers>
<identifier type="ABC" link="http://URL">ABCINFO</identifier>
</identifiers>
<other/>
</item>
<item>
...
</item>
</all>
Try using something like
xml sel -t -m //item[identifier[.="5555"]]/environment/os -v ./vendor -nl -v ./name -nl -v ./version -nl
on your actual xml and see if it works.