A.5. Converter ficheiro XML do GnuCash

O ficheiro de dados XML do GnuCash pode ser transformado em praticamente qualquer formato (por exemplo, QIF, CSV...) com bastante facilidade se se estiver familiarizado com XSLT. O ficheiro de dados do GnuCash é um XML bem formado e pode ser lido por um processador XSLT com uma folha de estilos associada. Isto permite transformar o ficheiro em qualquer formato que possa ser desenhado, dispondo da folha de estilo apropriada.

Têm de se seguir alguns passos. Escrever uma folha de estilos é tarefa para outra altura, mas se conseguir obter uma, eis o que tem de fazer:

  1. Copie o ficheiro XML do GnuCash para um ficheiro de trabalho.

    Importante

    Se o ficheiro foi modificado pela última vez com uma versão do GnuCash anterior à 2.0, antes de continuar para o próximo passo tem de modificar a etiqueta <gnc-v2> do ficheiro de trabalho para algo como isto:

    <gnc-v2 xmlns:cd="http://www.gnucash.org/XML/cd"
      xmlns:book="http://www.gnucash.org/XML/book"
      xmlns:gnc="http://www.gnucash.org/XML/gnc"
      xmlns:cmdty="http://www.gnucash.org/XML/cmdty"
      xmlns:trn="http://www.gnucash.org/XML/trn"
      xmlns:split="http://www.gnucash.org/XML/split"
      xmlns:act="http://www.gnucash.org/XML/act"
      xmlns:price="http://www.gnucash.org/XML/price"
      xmlns:ts="http://www.gnucash.org/XML/ts"
      xmlns:slot="http://www.gnucash.org/XML/kvpslot"
      xmlns:cust="http://www.gnucash.org/XML/cust"
      xmlns:entry="http://www.gnucash.org/XML/entry"
      xmlns:lot="http://www.gnucash.org/XML/lot"
      xmlns:invoice="http://www.gnucash.org/XML/invoice"
      xmlns:owner="http://www.gnucash.org/XML/owner"
      xmlns:job="http://www.gnucash.org/XML/job"
      xmlns:billterm="http://www.gnucash.org/XML/billterm"
      xmlns:bt-days="http://www.gnucash.org/XML/bt-days"
      xmlns:sx="http://www.gnucash.org/XML/sx"
      xmlns:fs="http://www.gnucash.org/XML/fs"
      xmlns:addr="http://www.gnucash.org/XML/custaddr">
    

    Nota

    Pode pôr praticamente tudo o que quiser dentro dos sinais de igual, mas um URL é o que costuma ser usado.

  2. Crie uma folha de estilo XSLT contendo a transformação desejada, ou obtenha uma já escrita (tanto quanto sabemos, não há nenhuma, mas estamos a trabalhar numa para CSV).

  3. Instale um processador XSLT tal como o Saxon ou o Xalan-J. Qualquer processador normalizado serve, realmente...

  4. Passe o ficheiro de trabalho e a folha de estilo pelo processador, seguindo as suas instruções específicas.

  5. Terá agora um ficheiro no formato de saída desejado. Uma pessoa empreendedora pode mesmo chegar a escrever uma folha de estilo para transformar o ficheiro de dados do GnuCash numa folha de cálculo do OpenOffice (ou vice-versa, já agora). Coisas como QIF deviam dar um bocadinho menos de trabalho.

Os benefícios são não ter de escrever um módulo Scheme ou uma nova rotina em C para fazer esta transformação. Qualquer pessoa que saiba ou possa aprender XML e XSLT pode realizar esta tarefa. Não é muito mais difícil do que escrever uma página web...

De qualquer forma, isto é só para deixar esta informação gravada em qualquer lado. O processo funciona em ficheiros de dados 5.6 e também deve funcionar em versões anteriores.