Préservation et suppression de délimiteurs
Vue d’ensemble
Deux propriétés s’appliquent aux enregistrements délimités : Conserver le délimiteur pour les données vides et Supprimer les délimiteurs de fin. Utilisez ces propriétés pour contrôler la façon dont l’assembleur de fichiers plats gère les délimiteurs associés aux données inexistantes et aux délimiteurs de fin. Lorsque vous définissez la propriété Conserver le délimiteur pour les données vides sur Oui (qui est le paramètre par défaut), les délimiteurs sont inclus dans le message de fichier plat traduit pour :
les champs sans données ;
les enregistrements immédiatement subordonnés sans donnée associés à aucune balise.
Lorsque vous définissez la propriété Conserver le délimiteur pour les données vides sur Non, les délimiteurs ne sont pas inclus dans le fichier plat traduit pour les enregistrements et les champs sans données. En outre, quel que soit le paramètre de la propriété Preserve Delimiter For Empty Data , les délimiteurs ne sont pas inclus dans le message de fichier plat traduit pour les enregistrements immédiatement subordonnés sans données pour lesquelles une balise est définie.
Lorsque vous définissez la propriété Supprimer les délimiteurs de fin sur Non (qui est le paramètre par défaut), un ou plusieurs délimiteurs de fin peuvent être inclus dans le message de fichier plat traduit. Lorsque vous définissez la propriété Supprimer les délimiteurs de fin sur Oui, les délimiteurs de fin ne sont pas inclus dans le message de fichier plat traduit.
Scénarios spéciaux
Dans certains cas particuliers, les comportements provoqués par les paramètres des propriétés Conserver le délimiteur pour les données vides et Supprimer les délimiteurs de fin peuvent entrer en conflit. Dans ce cas, les comportements associés à cette dernière propriété, Supprimer les délimiteurs de fin, sont prioritaires. Dans certains cas encore, un message vous préviendra de conflits potentiels entre les paramètres que vous avez choisis pour ces deux propriétés.
Par exemple, considérez un nœud Record défini avec les valeurs de propriété suivantes :
Le nom du nœud est MyRec
L’identificateur de balise est Rec
Le délimiteur enfant est ,
Le classement enfant est Infix
Et défini pour contenir cinq nœuds Field Element portant les noms suivants (ils peuvent également être des nœuds d’attribut de champ ou des nœuds d’enregistrement subordonnés) :
FieldElem1
FieldElem2
FieldElem3
FieldElem4
FieldElem5
Ensuite, supposons que le fragment XML principalement vide suivant, représentant ce nœud Record , soit passé à l’assembleur de fichiers plats.
<MyRec>
<FieldElem1 />
<FieldElem2 />
<FieldElem3>Val</FieldElem3>
<FieldElem4 />
<FieldElem5 />
</MyRec>
Le tableau suivant présente la sortie produite et les exigences de définition de propriété supplémentaires associées pour les nœuds de schéma appropriés, en fonction des différents paramètres des propriétés Preserve Delimiter For Empty Data (PDFED) et Suppress Trailing Delimiters (STD).
Paramètre PDFED | Paramètre STD | Output | Autres conditions requises pour le nœud |
---|---|---|---|
Oui | Non | Rec,,,Val,, | Aucun. |
Non | Oui | Rec,Val | Tous les nœuds Field Element doivent être configurés comme facultatifs. |
Oui | Oui | Rec,,,Val | Les nœuds nommés FieldElem4 et FieldElem5 doivent être configurés comme facultatifs. |
Non | Non | Rec,Val,, | Tous les nœuds Field Element doivent être configurés comme facultatifs. |
Lorsque ces paramètres de propriété spécifient que les délimiteurs ne doivent pas être préservés ou doivent être supprimés, un message vous avertissant que l'analyse des données du fichier plat sérialisées à l'aide du même schéma risque d'être impossible est envoyé dans les deux cas suivants :
Lorsque le nœud Record pour lequel la propriété Preserve Delimiter for Empty Data est définie sur Non et/ou la propriété Supprimer les délimiteurs de fin est définie sur Oui, respectivement, contient des nœuds d’élément Field subordonnés, des nœuds d’attribut de champ ou des nœuds Record pour lesquels aucune balise n’est spécifiée.
Lorsque les nœuds d’élément Field subordonnés, les nœuds d’attribut de champ et les nœuds Record pour lesquels aucune balise n’est spécifiée ne sont pas configurés pour être facultatifs (en définissant la propriété Min Occurs sur zéro) dans le schéma. Lorsque la propriété Supprimer les délimiteurs de fin a la valeur Oui, seuls les derniers nœuds subordonnés de ce type doivent être configurés comme facultatifs. Lorsque la propriété Preserve Delimiter For Empty Data est définie sur Non, tous les nœuds subordonnés de fin doivent être configurés comme facultatifs.
Notes
Les délimiteurs sont toujours conservés lorsque l’élément XML associé à un nœud Record, Field Element ou Field Attribute (probablement facultatif) est entièrement absent de la représentation XML du document métier, sauf lorsqu’un Enregistrement suit un champ facultatif manquant. En d'autres termes, lorsque les données ainsi que les balises XML les entourant sont absentes, le délimiteur correspondant est toujours inclus dans la représentation de fichier plat du document commercial.
Modifiez à présent le schéma de sorte qu'il inclue un enregistrement enfant et deux éléments champ qui viennent à la suite d'un champ élément manquant. Les éléments de l'enregistrement enfant sont configurés pour utiliser la barre verticale ( | ) comme délimiteur.
<MyRec>
<FieldElem1 />
<FieldElem2 />
<FieldElem3>Val</FieldElem3>
<!-- <FieldElem4 /> -->
<ChildRec>
<InnerFieldElement1>Inner1</InnerFieldElement1>
<InnerFieldElement2>Inner2</InnerFieldElement1>
</ChildRec>
<FieldElem5 />
</MyRec>
Si ceci est passé au désassembleur de fichier plat, les délimiteurs de FieldElem4 ne seront pas préservés mais les enregistrements suivants seront délimités comme prévu.
,,Val,,Inner1,Inner2,,
Voir aussi
- Considérations concernant les enregistrements délimités
- Conserver le délimiteur pour les données vides (propriété node des schémas de fichiers plats) et supprimer les délimiteurs de fin (propriété de nœud des schémas de fichiers plats) dans les conseils d’interface utilisateur et les informations de référence sur l’espace de noms d’API des développeurs