Exportazione XML

Esportazione dati da Galateo - formato XML

Galateo è in grado di generare files in formato XML contenente i dati dei reports elaborati.
Questa funzione consente, ad esempio, la generazione di fatture nel formato elettronico richieste dalla pubblica amministrazione e altre analoghe elaborazioni.

Per leggere correttamente le informazioni contenute in un file XML è consigliabile aprire tale file con uno degli appositi programmi, ad esempio XML notepad.

EXPORTAZIONE XML
Per attivare la funzionalità di exportazione XML è innanzitutto necessario abilitare l'exportazione in formato XML sulle opzioni generali di stampa (linguetta exportazione, sottolinguetta XML) e sulle pagine logiche e sulle sezioni/sottosezioni che si desidera exportare.

STRUTTURA BASE DEI DATI
La struttura dati XML viene indicata su più livelli

Salvo le specificità sintattiche descritte nei paragrafi successivi, la struttura dati XML è del tutto libera e può comprendere riferimenti a variabili presenti nel report (che devono essere indicate con il nome preceduto dal simbolo " $ "). Ad esempio:

esempio di struttura dati XML risultato dell'exportazione
<ELEMENTO>
   <ARTICOLO>$STR_CODICE_ARTICOLO</ARTICOLO>
   <QUANTITA>$FL_QTA</QUANTITA>
   <COSTO>$CR_COSTO_UNITARIO</COSTO> 
</ELEMENTO>
<ELEMENTO>
   <ARTICOLO>AAAAAAAA</ARTICOLO>
   <QUANTITA>10</QUANTITA>
   <COSTO>100</COSTO> 
</ELEMENTO>

ATTENZIONE: è responsabilità dell'utente utilizzare variabili di livello adeguato al contesto. Inserire in una struttura dati variabili che vengono elaborate ad un livello di maggior dettaglio può portare a risultati completamente differenti da quelli desiderati.

1 - STRUTTURA REPORT
La struttura XML per il report è la seguente:

sintassi esempio (si presuppone che esista una pagina con ID= "FATTURA")

[INTESTAZIONE XML]
[DATI XML]
<#PAGINA=idpagina#>
[DATI XML]

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.1.xsl"?>
<p:FatturaElettronica versione="1.1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://www.fatturapa.gov.it/sdi/fatturapa/v1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<#PAGINA=FATTURA#>
</p:FatturaElettronica>

La struttura è opzionale, nel senso che se non è presente vengono considerate tutte le strutture dati XML presenti su ciascuna delle pagine logiche.
L'elemento "INTESTAZIONE XML" è specificato a parte nelle impostazioni di exportazione, e viene inserito all'inizio dei dati da exportare (e prima anche di qualunque eventuale informazione di debugging.
L'elemento sintattico <PAGINA=idpagina> consente di specificare il punto di inserimento dei dati delle singole pagine logiche.
L'identificatore IDPAGINA deve essere l'ID di una pagina logica esistente e valida.
E' possibile inserire più volte l'istruzione, richiamando differenti pagine logiche anche non nell' ordine di stampa. Non è possibile richiamare più volte la stessa pagina logica.

2La struttura XML per ciascuna pagina logica è la seguente:

sintassi esempio esempio dopo l'interpretazione dei valori

[DATI XML]
<#SEZIONE#>
[DATI XML]

<FatturaElettronicaBody>
   <DatiGenerali>
      <TipoDocumento>$tipodoc</TipoDocumento>
      <Divisa>$str_valuta</Divisa>
      <Data>$datadoc</Data>
      <Numero>$numerodoc</Numero>
      <Causale>$causale</Causale>
   </DatiGenerali>

   <Articoli>
      <#SEZIONE#>
   </Articoli>

   <DatiRiepilogo>
      <AliquotaIVA>$aliquota</AliquotaIVA>
      <Imponibile>$imponibile</Imponibile>
      <Imposta>$IVA</Imposta>
   </DatiRiepilogo>

</FatturaElettronicaBody>
<FatturaElettronicaBody>
   <DatiGenerali>
      <TipoDocumento>TD01</TipoDocumento>
      <Divisa>EUR</Divisa>
      <Data>2015-01-31</Data>
      <Numero>123</Numero>
      <Causale>FATT-VEN</Causale>
   </DatiGenerali>

   <Articoli>
      ... (dati della sezione che qui non sono indicati) ...
   </Articoli>

   <DatiRiepilogo>
      <AliquotaIVA>22.00</AliquotaIVA>
      <Imponibile>10000.00</Imponibile>
      <Imposta>2200.00</Imposta>
   </DatiRiepilogo>

</FatturaElettronicaBody>

La struttura è opzionale, nel senso che se non è presente vengono considerate tutte le strutture dati XML presenti su ciascuna delle sezioni/sottosezioni.
L'elemento sintattico <SEZIONE> consente di specificare il punto di inserimento dei dati relativi alla prima sezione contenente una struttura XML valida.
Le sezioni che non contengono una struttura dati XML vengono ignorate.
L'istruzione <SEZIONE> può e deve essere inserita una sola volta.

3Per ogni sezione per la quale si desidera exportare dati in formato XML è necessario inserire una struttura dati XML.
Opzionalmente è possibile inserire all'interno della struttura dati il riferimento <SOTTOSEZIONE> per indicare il punto di inserimento dei dati XML derivanti da una eventuale sotto-sezione.

Esempio:

struttura risultato risultato con esplosione sottosezione
<NUMERODOC>$STR_NUMERODOC</NUMERODOC>
<DATA>$DATADOC</DATA>
<CONTO>$STR_CONTO</CONTO>
<SOTTOSEZIONE>
<TOTALE>$CR_TOTALE</TOTALE>
<NUMERODOC>123</NUMERODOC>
<DATA>2015-01-31</DATA>
<CONTO>IBM</CONTO>
<SOTTOSEZIONE>
<TOTALE>10000</TOTALE>
<NUMERODOC>123</NUMERODOC>
<DATA>2015-01-31</DATA>
<CONTO>IBM</CONTO>

<ELEMENTO>
   <ARTICOLO>AAAAAAAA</ARTICOLO>
   <QUANTITA>10</QUANTITA>
   <COSTO>100</COSTO> 
</ELEMENTO>

<ELEMENTO>
   <ARTICOLO>BBBBBBB</ARTICOLO>
   <QUANTITA>20</QUANTITA>
   <COSTO>200</COSTO> 
</ELEMENTO>

<ELEMENTO>
   <ARTICOLO>CCCCCCC</ARTICOLO>
   <QUANTITA>30</QUANTITA>
   <COSTO>300</COSTO> 
</ELEMENTO>

<TOTALE>10000</TOTALE>

ALTRE OPZIONIì
E' possibile attivare (o disattivare) selettivamente l'exportazione di determinati record, subordinandola alla soddisfazione di una espressione logica.

CARATTERI SPECIALI XML
La conversione dei caratteri speciali XML (sono 5: " ' < > & ) deve essere eseguita a cura dello sviluppatore del report e può avvenire in uno dei seguenti modi:

Pagina base del manuale di JOLLY