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 di GnuCash sono di tipo XML e possono essere trasformati abbastanza facilmente in quasi tutti gli altri formati (es: QIF, CSV...) se si ha confidenza con l'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. creare una copia di lavoro del file di GnuCash per evitare la perdita del file originale. Modificare il tag <gnc-v2> del file di lavoro in un valore simile a quelli riportati di seguito. Si noti che è possibile inserire più o meno qualsiasi stringa nel campo «="..."»; è stato utilizzato l'URL perchè è tradizione usarlo (se così si può dire per una tecnologia così giovane!);


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

  2. creare un foglio di stile XSLT contenente la trasformazione che si desidera effettuare oppure se ne recuperi uno già preparato (AFAIK, 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....

Il processo funziona per la versione 2.0.0 e i file dei dati CVS HEAD; dovrebbe anche funzionare nelle versioni 1.8.x. Il processo non è stato testato recentemente per le versioni 1.6.x, ma dovrebbe funzionare anche in quel caso...