0
Предполагая, что у меня есть такой файл XML:условия внутри одного вызова XMLStarlet
<view>
<field table="alice" name="fish"/>
<field id="confirmation" controlType="button" enabled="some-condition">
<title>Confirm...</title>
</field>
<field table="bob" name="cat"/>
<field table="bob" name="dog" hidden="true"/>
</view>
Я хочу, чтобы вывести все свои поля, но вывод обусловливающие атрибутов , которые присутствуют.
Ожидаемый результат:
field 'alice.fish'
button "Confirm..." (enabled: some-condition)
field 'bob.cat'
field 'bob.dog' (hidden: true)
Текущий результат:
field 'alice.fish' (hidden:)
field '.' (hidden:)
field 'bob.cat' (hidden:)
field 'bob.dog' (hidden: true)
"" (enabled:)
button "confirm" (enabled: some-condition)
"" (enabled:)
"" (enabled:)
через 2 звонки на XMLStarlet:
xmlstarlet sel -t -m "//field" -o "field '" -v "@table" -o "." -v "@name" -o "' (hidden: " -v "@hidden" -o ")" -n $1
xmlstarlet sel -t -m "//field" -v "@controlType" -o " \"" -v "@id" -o "\" (enabled: " -v "@enabled" -o ")" -n $1
ли можно превратить 3 различных типов результатов в 1 звоните в XmlStarlet, чтобы они оставались в оригинальной заказ?
Практически там! Я бы хотел, чтобы текст между тегами 'title', в случае кнопки. Можете ли вы показать мне, как это получить? - Не настоящий новичок в XPath. – user3341592
Я имел в виду: настоящий XPath новичок здесь! – user3341592
Просто замените '@ id' на' title'. – npostavs