A.5. Convertire i file XML di GnuCash

I file dei dati XML creati da GnuCash possono essere trasformati facilmente in quasi tutti gli altri formati di file di dati (es. QIF, CSV...), se si ha familiarità con XSLT. I file dei dati creati da GnuCash sono XML «well-formed» e possono essere quindi «dati in pasto» a un parser XSLT con un foglio di stile associato. Questo permette di trasformare il file in qualsiasi formato che può essere progettato, dato un adeguato foglio di stile.

Per portare a termine la procedura con successo, è necessario seguire alcuni passi; la scrittura di un foglio di stile non è argomento da affrontare in questa sede ma, se si dispone di uno di questi, ecco come procedere:

  1. Copiare il file dei dati XML di GnuCash in un file che funziona.

    Nota

    Se il file è stato modificato l’ultima volta con una versione di GnuCash precedente alla 2.0, allora prima di continuare al passo successivo, è necessario modificare il tag <gnc-v2> come di seguito indicato:


    <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">
        

    Si può inserire più o meno qualsiasi cosa prima del segno di uguale, ma generalmente si utilizza un URL.

  2. creare un foglio di stile XSLT contenente la trasformazione che si desidera effettuare oppure recuperarne uno già preparato (non ce ne sono molti, ma ce n’è uno per il formato CSV in lavorazione);

  3. installare un processore XSLT come Saxon (http://saxon.sourceforge.net/) o Xalan-J (http://xml.apache.org/). Comunque qualsiasi processore simile funzionerà...;

  4. elaborare il file di lavoro e il foglio di stile attraverso il processore seguendo le istruzioni fornite;

  5. si disporrà infine di un file nel formato desiderato. Un utente intraprendente può addirittura arrivare a scrivere un foglio di stile per trasformare un file dei dati di GnuCash in un foglio di Calc per OpenOffice (o vice-versa). Alcuni formati, come il QIF, richiedono un po’ meno lavoro.

Il beneficio risiede nel fatto che non è necessario scrivere un modulo in Scheme o una nuova routine in C per eseguire la trasformazione. Chiunque conosca o abbia voglia di imparare il linguaggio XML può cimentarsi in questa operazione: sinceramente, niente di più difficile che scrivere una pagina web....

Anyhow, I just wanted this tidbit to be captured somewhere permanently. The process works on 2.6.14 datafiles, and ought to work on earlier versions, too.