DEFXMLDATA
Consente di definire la struttura di un file XML.
Consente di definire le seguenti strutture base XML:
\<Elemento Attr1=val1, Attr2=val2, .../\>
\<Elemento Attr1=val1, Attr2=val2, ...\>Valore\</Elemento\>
\<Elemento Attr1=val1, Attr2=val2, ...\>
SottoElementi
\</Elemento\>
\<Elemento\>Valore\</Elemento\>
\<Elemento\>
SottoElementi
\</Elemento\>
Queste strutture possono essere ripetute e/o nidificate liberamente all'interno di altri elementi XML.
Si definisce ELEMENTO una porzione di file XML la quale si caratterizza per un nome ed una serie di attributi. Un elemento può contenere altri elementi, semplici oppure composti a loro volta di altri sotto-elementi.
La struttura qui descritta si interessa solo degli attributi e degli elementi semplici (non di quelli composti).
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| PERCORSO | Stringa | ||||
| VAR | Variabile | ||||
| ATTRIBUTO | |||||
| FMT | Stringa | ||||
| FILE | Variabile | ||||
| CDATA | Intero | ||||
| FACOLTATIVO | Intero | ||||
| TRIM | Intero | ||||
| BASE64 | Intero | ||||
| NUMERODECIMALIMINIMO | Intero | ||||
| NOMEELEMENTO | |||||
| PERCORSOELEMENTO | Stringa | ||||
| NOMEVARIABILEELEM | Variabili | ||||
| NOMEATTRIBUTO | Stringa | ||||
| NOMEVARIABILE | Variabili | ||||
| TIPO | |||||
| OBBLIGATORIO | Intero | ||||
| ENDDATA | 31.5 |
PERCORSO
Percorso e nome dell'elemento, come compare all'interno del file XML.
VAR
Variabile di programma destinata a contenere il valore dell'attributo, quando letto dal file XML. In base al tipo, desunto dall'appendice ($, &, !, etc. o nulla), viene effettuata la conversione in lettura (stringa - tipo della variabile) e scrittura (tipo della variabile - stringa).
La variabile può essere definita direttamente sulla specifica (es.: VAR[VALORE_CAMPO$[25]]).
ATTRIBUTO
Identifica il nome dell'attributo, ovvero del sotto-elemento semplice all'interno del file XML.
FMT
Attributo di definizione del formato della variabile associata all'elemento/attributo.
TipoVar: può essere una delle costanti definite in BC per la definizione dei formati dei controlli, od un nuovo formato precedentemente definito con una specifica @DEFFORMAT.
Il formato deve essere coerente con il tipo della variabile o il testo costante presente in VAR[].
FILE
Attributo che permette di indicare la variabile di tipo alfanumerico che contiene il nome del file da leggere / scrivere come contenuto dell'elemento
CDATA
Attributo che permette di indicare che l'elemento va scritto mediante una sezione CDATA.
FACOLTATIVO
Questo flag permette di definire come 'facoltativo' l'elemento definito.
E' possibile inserire il parametro solo nel caso in cui sia presente una variabile associata all'elemento.
Se questo parametro è indicato, l'elemento non verrà scritto nel caso la variabile associata non sia valorizzata.
TRIM
Questo flag permette di pilotare il trim automatico del contenuto della variabile associato all'elemento definito.
Questo può assumere due valori:
- 0 - (Default) Non effettua il trim automatico della variabile
- 1 - Effettua il trim automatico in fase di scrittura del valore della variabile
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
BASE64
Il parametro permette di pilotare come includere un file all'interno del file. Esso può assumere due valori:
-
1 - (Default) Consente di include il file scrivendolo su più linee
-
2 - Consente di includere il file scrivendolo su unica riga
NUMERODECIMALIMINIMO
Il parametro permette di indicare un numero di cifre decimali minimo per la formattazione di un valore numerico.
Ad esempio, indicando 2, il numero 123 verrà formattato come 123.00.
L'utilizzo del parametro esclude l'utilizzo del parametro FMT
NOMEELEMENTO
Nome simbolico con cui il programma BC identifica l'elemento. Il nome simbolico viene utilizzato sulle specifiche di lettura/scrittura per riferire l'elemento.
PERCORSOELEMENTO
Percorso e nome dell'elemento, come compare all'interno del file XML. Deve essere una costante, indicata quindi tra doppi apici. Se l'elemento è contenuto in un altro elemento, la sua identificazione deve essere espressa accostando i nomi degli elementi-padre, separati da carattere backslash '\'.
Ogni elemento definito sarà quindi espresso in forma simile alla seguente: '\Radice\ElementoPadre\Elemento'
NOMEVARIABILEELEM
Variabile di programma destinata a contenere il valore dell'elemento, quando letto dal file XML. In base al tipo, desunto dall'appendice ($, &, !, etc. o nulla), viene effettuata la conversione in lettura (stringa - tipo della variabile) e scrittura (tipo della variabile - stringa).
Nel caso di variabile stringa, il valore restituito al programma e riempito a spazi sulla lunghezza della variabile. La variabile può essere definita direttamente sulla specifica (es.: '\Elemento' VAL_ELEM$[25]).
NOMEATTRIBUTO
Nome che identifica l'attributo, ovvero il sotto-elemento semplice all'interno del file XML.
Deve essere una costante, indicata quindi tra doppi apici.
NOMEVARIABILE
Variabile di programma destinata a contenere il valore dell'attributo, quando letto dal file XML. In base al tipo, desunto dall'appendice ($, &, !, etc. o nulla), viene effettuata la conversione in lettura (stringa - tipo della variabile) e scrittura (tipo della variabile - stringa).
Nel caso di variabile stringa, il valore restituito al programma e riempito a spazi sulla lunghezza della variabile. La variabile può essere definita direttamente sulla specifica (es.: 'ATTR1' ATTRIBUTO_1$[25]).
TIPO
Definisce la sintassi con cui l'attributo si presenta sul file XML. Se non indicato, il default è '/'.
Può assumere i seguenti valori:
- '=' - attributo espresso a livello di definizione dell'elemento (ATTRIBUTO='Valore')
- '/' - attributo definito come sotto-elemento semplice (<ATTR>Valore</ATTR>).
Il default è '/'. Il gruppo di parametri 'NomeAttributo - NomeVariabile - Tipo' deve essere ripetuto per ogni attributo 'significativo' (necessario) dell'elemento definito.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
[=] | attributo espresso a livello di definizione dell'elemento |
[/] | attributo definito come sotto-elemento semplice |
OBBLIGATORIO
Indica se l'Attributo è obbligatorio, ovvero se deve essere scritto sul file XML anche quando non è valorizzato (ovvero, quando la variabile associata vale 0 se numerica, '' se alfanumerica). Qualora non indicato, il valore di default applicato è 0 = Attributo non obbligatorio.
I valori ammessi sono:
- 0 - Attributo non obbligatorio. Se non valorizzato, non viene scritto sul file XML.
- 1 - Attributo obbligatorio. Viene scritto anche quando non valorizzato.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
ENDDATA
Parola chiave, per individuare la fine della definizione dell'elemento.
Esempi
Definizione della struttura "elemento" di file XML
'Considerando il seguente file XML:
'<ELEMENTO ATTR1="Valore 1" ATTR2="2222">
' <ELEM_SEMPLICE_1>Valore Semplice 1</ELEM_SEMPLICE_1>
' <ELEM_SEMPLICE_2>Valore Semplice 2</ELEM_SEMPLICE_2>
' <ELEMENTO_COMPOSTO ATTR3="Valore 3">
' <ELEM_SEMPLICE_3>Valore Semplice 3</ELEM_SEMPLICE_3>
' ... Altri sotto-elementi ...
' </ELEMENTO_COMPOSTO>
' <ELEMENTO_COMPOSTO>
' Attributi e componenti del sotto-elemento ...
' </ELEMENTO_COMPOSTO>
' <ELEMENTO_CON_VALORE ATTR1="Valore1">ValoreElemento</ELEMENTO_CON_VALORE>
'</ELEMENTO>
...
'Le istruzioni BC per costruire la definizione del file è la seguente:
'@DEFXMLDATA ELEMENTO_1 "\\ELEMENTO"
"ATTR1" Attributo_1 [=]
"ATTR2" Attributo_2 [=]
"ELEM_SEMPLICE_1" AttrElemSemplice_1 [/]
ENDDATA
'@DEFXMLDATA ELEMENTO_2 "\\ELEMENTO\\ELEMENTO_COMPOSTO"
"ATTR3" Attributo_3 [=]
"ELEM_SEMPLICE_3" AttrElemSemplice_3 [/]
ENDDATA
'@DEFXMLDATA ELEMENTO_3 "\\ELEMENTO\\ELEMENTO_CON_VALORE" AttrElem[20]
"ATTR1" Attributo_1 [=]
ENDDATA
'Come si può notare dagli esempi, la definizione dell'elemento ELEMENTO_1
'non prevede alcun riferimento al sottoelemento composto ELEMENTO_2:
'se devono essere elaborate anche le informazioni relative all'elemento composto,
'è necessario prevedere una seconda '@DEFXMLDATA.