Como escrevo o conteúdo de uma consulta --shell do XMLLint?

1

Estou usando xmllint --shell para inspecionar um arquivo XML muito grande. Eu escrevi uma consulta XPath que retorna os resultados que eu quero, mas para exibir e salvar os resultados, estou tendo que cd para cada nó e, em seguida, write filename.xml . Isso não seria tão ruim se eu não precisasse pesquisar todas as vezes, selecionando o índice de resultados que eu quero. Exemplo:

xpath count(/root/entry/subentry[special_id = /root/entry/subentry/special_id])
Object is a Node Set :
Set contains 121 nodes:
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[1]
write node1.xml
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[2]
write node2.xml
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[3]
write node3.xml
...
cd (/root/entry/subentry[special_id = /root/entry/subentry/special_id])[121]
write node121.xml

O acima é mais ou menos o que estou fazendo. Existe uma maneira de salvar os nós XML como um arquivo direto da pesquisa sem ter que cd individualmente e continuar a repetir a pesquisa? Ou existe uma maneira de preservar os resultados da pesquisa ou obter seus números de posição em uma consulta?

    
por jktravis 18.11.2015 / 00:59

1 resposta

1

Isso não parece ser possível, então eu escrevi um XSLT para fazer isso.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="2.0">

    <xsl:template match="/">
        <root>
            <xsl:for-each select="/root/entry/subentry[special_id = /root/entry/subentry/special_id]">
                <xsl:copy-of select="."/>
            </xsl:for-each>
        </root>
    </xsl:template>
</xsl:stylesheet>
    
por 18.11.2015 / 14:32

Tags