Conservazione ed eliminazione dei delimitatori

Panoramica

Esistono due proprietà che si applicano ai record delimitati: Mantieni delimitatore per i dati vuoti e Elimina delimitatori finali. Usare queste proprietà per controllare il modo in cui l'assembler file flat gestisce i delimitatori associati a dati non esistenti e delimitatori finali. Quando si imposta la proprietà Preserve Delimiter For Empty Data su (ovvero l'impostazione predefinita), i delimitatori vengono inclusi nel messaggio file flat tradotto per:

  • Campi senza dati.

  • Record immediatamente subordinati senza dati a cui non è associato un tag.

    Quando si imposta la proprietà Preserve Delimiter For Empty Data su No, i delimitatori non sono inclusi nel file flat tradotto per record e campi senza dati. Inoltre, indipendentemente dall'impostazione della proprietà Preserve Delimiter For Empty Data, i delimitatori non verranno inclusi nel messaggio file flat tradotto per record immediatamente subordinati senza dati per cui viene definito un tag.

    Quando si imposta la proprietà Elimina delimitatori finali su No (ovvero l'impostazione predefinita), uno o più delimitatori finali possono essere inclusi nel messaggio file flat tradotto. Quando si imposta la proprietà Elimina delimitatori finali su , i delimitatori finali non sono inclusi nel messaggio file flat tradotto.

Scenari speciali

Esistono alcuni casi speciali in cui i comportamenti causati dalle impostazioni del delimitatore di conservazione per i dati vuoti e eliminare le proprietà delimitatori finali possono essere in conflitto. In questi casi, i comportamenti associati alla seconda proprietà, Elimina delimitatori finali, avranno la precedenza. Inoltre, vi sono alcuni casi speciali in cui viene visualizzato un avviso in merito a possibili conflitti tra le impostazioni scelte per queste due proprietà.

Si consideri ad esempio un nodo Record definito con i valori delle proprietà seguenti:

  • Il valore di Nome nodo è MyRec

  • Il valore di Identificatore tag è Rec

  • Il valore di Delimitatore figlio è ,

  • Il valore di Ordine elementi figlio è Infisso

    E definito per contenere cinque nodi Elemento campo con i nomi seguenti (potrebbero anche essere nodi Attributo campo o nodi Record subordinati):

  • FieldElem1

  • FieldElem2

  • FieldElem3

  • FieldElem4

  • FieldElem5

    Si supponga quindi che il frammento XML seguente, che rappresenta questo nodo Record , venga passato all'assembler file flat.

<MyRec>  
    <FieldElem1 />  
    <FieldElem2 />  
    <FieldElem3>Val</FieldElem3>  
    <FieldElem4 />  
    <FieldElem5 />  
</MyRec>  
  

Nella tabella seguente viene illustrato l'output prodotto e i requisiti di impostazione delle proprietà aggiuntivi associati per i nodi dello schema pertinenti, in base a impostazioni diverse per le proprietà Preserve Delimiter For Empty Data (PDFED) e Elimina delimitatori finali (STD).

Impostazione di Mantieni delimitatore per i dati vuoti Impostazione di Elimina delimitatori finali Output Requisiti nodi aggiuntivi
No Rec,,,Val,, Nessuno.
No Rec,Val Tutti i nodi elemento campo devono essere configurati come facoltativi.
Rec,,,Val I nodi denominati FieldElem4 e FieldElem5 devono essere configurati come facoltativi.
No No Rec,Val,, Tutti i nodi elemento campo devono essere configurati come facoltativi.

Quando queste proprietà specificano che i delimitatori non devono essere mantenuti o devono essere eliminati, nei seguenti due casi verrà generato un avviso che informa che potrebbe essere impossibile analizzare i dati del file flat serializzato utilizzando lo stesso schema:

  • Quando il nodo Record per il quale la proprietà Preserve Delimiter For Empty Data è impostata su No e/o la proprietà Elimina delimitatori finali è impostata rispettivamente su , contiene nodi elemento campo subordinato, nodi attributo campo o nodi Record per cui non è specificato alcun tag.

  • Quando i nodi dell'elemento campo subordinato, i nodi Attributo campo e i nodi Record per cui non è specificato alcun tag non sono configurati per essere facoltativi (impostando la proprietà Min Occurs impostata su zero) nello schema. Quando la proprietà Elimina delimitatori finali è impostata su , solo gli ultimi nodi subordinati devono essere configurati come facoltativi. Quando la proprietà Preserve Delimiter For Empty Data è impostata su No, tutti i nodi subordinati finali devono essere configurati come facoltativi.

Nota

I delimitatori vengono sempre mantenuti quando l'elemento XML associato a un record ,presumibilmente facoltativo, un elemento campo o un nodo Attributo campo non sono completamente mancanti dalla rappresentazione XML del documento aziendale, tranne quando un record segue un campo facoltativo mancante. In altre parole, quando mancano sia i dati che i tag XML circostanti, il delimitatore corrispondente viene sempre incluso nella rappresentazione file flat del documento di business.

A questo punto cambiare lo schema per includere un record figlio con due nodi Elemento campo che seguono immediatamente un nodo Elemento campo mancante. Gli elementi del record figlio sono configurati per l'utilizzo del carattere | (barra verticale) come delimitatore.

<MyRec>  
    <FieldElem1 />  
    <FieldElem2 />  
    <FieldElem3>Val</FieldElem3>  
    <!-- <FieldElem4 /> -->  
    <ChildRec>  
        <InnerFieldElement1>Inner1</InnerFieldElement1>   
        <InnerFieldElement2>Inner2</InnerFieldElement1>  
    </ChildRec>  
    <FieldElem5 />  
</MyRec>  
  

Se viene passato al disassembler del file flat, i delimitatori di FieldElem4 non verranno mantenuti ma i record successivi verranno delimitati come previsto.

,,Val,,Inner1,Inner2,,  

Vedere anche