Até onde eu sei, o separador |
pode ser usado somente em caminhos inteiros:
echo 'cat /root/child/@attr1|/root/child/@attr2|/root/child/@attr3' | xmllint --shell data.xml
(como //
significa em qualquer profundidade, // root) coloca o analisador em um trabalho extra sem sentido Supondo que sua aparência XML de exemplo tenha estrutura semelhante à real (assim, root é realmente o nó raiz do XML), melhor use “/ root / child”.)
Ou você pode usar uma expressão com funções XPath:
echo 'cat /root/child/@*[name()="attr1" or name()="attr2" or name()="attr3"]' | xmllint --shell data.xml
Se você precisar de todos os atributos com o nome “attr *”, você pode usar uma expressão genérica:
echo 'cat /root/child/@*[starts-with(name(),"attr")]' | xmllint --shell data.xml