Minha experiência com ferramentas de linha de comando XML me deixou com a sensação de que há muito a desejar. Quase sem falhar eu me vejo desistindo e apenas usando Python. Dito isso, acho que tenho uma solução XQuery para esse problema que funciona com o utilitário basex
. Aqui está a expressão XQuery:
<!-- xml_rename_sequence.xquery -->
for $name at $position in doc('names.xml')//Name
return rename node $name as concat(name($name),$position)
E aqui está o arquivo de dados XML:
<!-- names.xml -->
<Names>
<Name>Luigi</Name>
<Name>Mario</Name>
<Name>Peach</Name>
</Names>
Aqui está como nós executamos o script (ele modifica o arquivo no local):
basex -u xml_rename_sequence.xquery
E aqui está o arquivo de dados atualizado:
<!-- names.xml -->
<Names>
<Name1>Luigi</Name1>
<Name2>Mario</Name2>
<Name3>Peach</Name3>
</Names>
Eu também tentei usar as seguintes ferramentas (sem sucesso):
Aqui estão algumas postagens que encontrei sobre como incrementar um contador no XQuery:
E aqui estavam algumas outras referências que usei: