Например, если:Как фильтровать несколько атрибутов в XMLStarlet?
<fruit>
<banana source='Ecuador' category='I'>
<quantity>1</quantity>
</banana>
<banana source='Costa Rica' category='I'>
<quantity>1</quantity>
</banana>
</fruit>
Скажем, я хочу, чтобы изменить
<banana source='Costa Rica' category='I'>
в
<banana source='Costa Rica' category='II'>
или его количество до 2, как бы я ссылаться на него, если я хочу, чтобы фильтровать как в исходном, так и в исходном значении категории?
Я пытаюсь сделать следующее:
xmlstarlet ed -u "/fruit/banana[@source='Ecuador' @category='I']/quantity" -v 2
... но это приводит к синтаксической ошибке, как показано ниже:
Invalid predicate: /fruit/banana[@source='Ecuador' @category='I']/quantity
Invalid expression: /fruit/banana[@source='Ecuador' @category='I']/quantity
Вы читали [документацию] (http://xmlstar.sourceforge.net /doc/xmlstarlet.pdf)? Вы пробовали какие-либо из параметров команды? Можете ли вы показать, что вы пробовали, и объяснить, что не сработало? –
Да, я прочитал документацию, нашел ссылки и примеры только с одним атрибутом. Я пытался сделать что-то вроде: xmlstarlet ed -u "/ fruit/banana [@ source = 'Ecuador' @ category = 'I']/quantity" -v 2 example.xml Но это дает мне: Недопустимый предикат:/фрукты/банан [@ source = 'Ecuador' @ category = 'I']/количество Недопустимое выражение:/fruit/banana [@ source = 'Ecuador' @ category = 'I']/количество – EBM
Should вероятно, будет помечен 'xpath'. –