Beibehalten und Unterdrücken von Trennzeichen
Überblick
Es gibt zwei Eigenschaften, die für durch Trennzeichen getrennte Datensätze gelten: Beibehalten des Trennzeichens für leere Daten und Unterdrücken von nachgestellten Trennzeichen. Verwenden Sie diese Eigenschaften, um zu steuern, wie der Flatfile-Assembler Trennzeichen behandelt, die nicht vorhandenen Daten und nachfolgenden Trennzeichen zugeordnet sind. Wenn Sie die Eigenschaft Trennzeichen für leere Daten beibehalten auf Ja (die Standardeinstellung) festlegen, sind Trennzeichen in der übersetzten Flatfilenachricht enthalten für:
Felder ohne Daten
Direkt untergeordnete Datensätze ohne Daten, denen kein Tag zugeordnet ist
Wenn Sie die Eigenschaft Trennzeichen für leere Daten beibehalten auf Nein festlegen, sind Trennzeichen in der übersetzten Flatfile für Datensätze und Felder ohne Daten nicht enthalten. Darüber hinaus werden unabhängig von der Einstellung der Eigenschaft Trennzeichen für leere Daten beibehalten keine Trennzeichen in der übersetzten Flatfilenachricht für sofort untergeordnete Datensätze ohne Daten enthalten, für die ein Tag definiert ist.
Wenn Sie die Eigenschaft Suppress Trailing Delimiters auf No (standardeinstellung) festlegen, können mindestens ein nachfolgendes Trennzeichen in der übersetzten Flatfilenachricht enthalten sein. Wenn Sie die Eigenschaft Nachfolgende Trennzeichen unterdrücken auf Ja festlegen, sind nachfolgende Trennzeichen nicht in der übersetzten Flatfilenachricht enthalten.
Spezielle Szenarien
Es gibt einige Sonderfälle, in denen das Verhalten, das durch die Einstellungen der Eigenschaften "Trennzeichen für leere Daten beibehalten" und "Nachgestellte Trennzeichen unterdrücken" verursacht wird, in Konflikt treten kann. In solchen Fällen haben die Verhaltensweisen, die der letztgenannten Eigenschaft zugeordnet sind, Die Folgenden Trennzeichen unterdrücken, Vorrang. Außerdem gibt es Sonderfälle, in denen Sie vor potenziellen Konflikten gewarnt werden, die aufgrund der von Ihnen ausgewählten Einstellungen für diese beiden Eigenschaften auftreten können.
Betrachten Sie beispielsweise einen Record-Knoten , der mit den folgenden Eigenschaftswerten definiert ist:
Knotenname ist "MyRec"
Tagbezeichner ist "Rec"
Trennzeichen für untergeordnete Felder ist ","
Reihenfolge der untergeordneten Elemente ist "Infix"
Und definiert, um fünf Feldelementknoten mit den folgenden Namen zu enthalten (dies können auch Feldattributeknoten oder untergeordnete Datensatzknoten sein):
FieldElem1
FieldElem2
FieldElem3
FieldElem4
FieldElem5
Gehen Sie als Nächstes davon aus, dass das folgende hauptsächlich leere XML-Fragment, das diesen Datensatzknoten darstellt, an den Flatfile-Assembler übergeben wird.
<MyRec>
<FieldElem1 />
<FieldElem2 />
<FieldElem3>Val</FieldElem3>
<FieldElem4 />
<FieldElem5 />
</MyRec>
Die folgende Tabelle zeigt die erzeugte Ausgabe und die zugehörigen zusätzlichen Eigenschafteneinstellungsanforderungen für die relevanten Schemaknoten basierend auf verschiedenen Einstellungen für die Eigenschaften "Trennzeichen für leere Daten beibehalten " (PDFED) und "Suppress Trailing Delimiters " (STD).
TFLDB-Einstellung | NFU-Einstellung | Ausgabe | Zusätzliche Anforderungen |
---|---|---|---|
Ja | Nein | Rec,,,Val,, | Keine. |
Nein | Ja | Rec,Val | Alle Feldelementknoten müssen optional konfiguriert werden. |
Yes | Yes | Rec,,,Val | Knoten mit den Namen FieldElem4 und FieldElem5 müssen optional konfiguriert werden. |
No | No | Rec,Val,, | Alle Feldelementknoten müssen optional konfiguriert werden. |
Wenn diese Einstellungen festlegen, dass Trennzeichen entweder nicht erhalten oder unterdrückt werden sollen, wird in den beiden folgenden Fällen eine Warnmeldung mit dem Hinweis angezeigt, dass die serialisierten Flatfile-Daten möglicherweise nicht mit demselben Schema analysiert werden können:
Wenn der Record-Knoten , für den die Eigenschaft Trennzeichen für leere Daten beibehalten auf Nein festgelegt ist, und/oder die Eigenschaft Nachfolgende Trennzeichen unterdrücken auf Ja festgelegt ist, enthält untergeordnete Feldelementknoten , Feldattributeknoten oder Datensatzknoten , für die kein Tag angegeben ist.
Wenn die untergeordneten Feldelementknoten , Feldattributeknoten und Datensatzknoten , für die kein Tag angegeben ist, im Schema nicht als optional konfiguriert sind (indem die Min Occurs-Eigenschaft auf 0 festgelegt wird). Wenn die Eigenschaft Nachfolgende Trennzeichen unterdrücken auf Ja festgelegt ist, müssen nur die letzten untergeordneten Knoten als optional konfiguriert werden. Wenn die Eigenschaft Trennzeichen für leere Daten beibehalten auf Nein festgelegt ist, müssen alle nachfolgenden untergeordneten Knoten als optional konfiguriert werden.
Hinweis
Trennzeichen werden immer beibehalten, wenn das XML-Element, das einem (vermutlich optionalen) Datensatz-, Feldelement- oder Feldattributeknoten zugeordnet ist, in der XML-Darstellung des Geschäftsdokuments vollständig fehlt, außer wenn ein Datensatz einem fehlenden optionalen Feld folgt. Das heißt, wenn sowohl die Daten als auch die benachbarten XML-Tags fehlen, ist das entsprechende Trennzeichen in der Flatfile-Darstellung des Geschäftsdokuments immer enthalten.
Ändern Sie nun das Schema so, dass es einen untergeordneten Datensatz mit zwei Feldelementen direkt unterhalb eines fehlenden Feldelements enthält. Die untergeordneten Datensatzelemente sind so konfiguriert, dass sie das Zeichen "|" (senkrechter Strich) als Trennzeichen verwenden.
<MyRec>
<FieldElem1 />
<FieldElem2 />
<FieldElem3>Val</FieldElem3>
<!-- <FieldElem4 /> -->
<ChildRec>
<InnerFieldElement1>Inner1</InnerFieldElement1>
<InnerFieldElement2>Inner2</InnerFieldElement1>
</ChildRec>
<FieldElem5 />
</MyRec>
Wenn dies an den Flatfile-Disassembler übergeben wird, werden die Trennzeichen für "FieldElem4" nicht beibehalten. Stattdessen werden die folgenden Datensätze wie erwartet getrennt.
,,Val,,Inner1,Inner2,,
Weitere Informationen
- Überlegungen zu zeichengetrennten Datensätzen
- Beibehalten des Trennzeichens für leere Daten (Node-Eigenschaft von Flatfileschemas) und Unterdrücken von nachgestellten Trennzeichen (Node-Eigenschaft von Flatfileschemas) in der Referenz zu API-Namespaces für Benutzeroberflächen und Entwickler