Schemaverarbeitung im Jitterbit Integration Studio
Einführung
Bei Verwendung eines benutzerdefinierten Schema, können Daten unter Umständen während der Verarbeitung konvertiert werden. Auf dieser Seite wird beschrieben, wann und wie Daten konvertiert werden.
Namen von Feldern und Knoten
Feld- und Knotennamen werden gemäß dem XML-Standard in gültige Namespaces konvertiert. Die zulässigen Zeichen gemäß W3C-Definition finden Sie unter NCNameChar.
Namen mit Leerzeichen
Leerzeichen, die Teil eines Feld- oder Knotennamens sind, werden durch einen Unterstrich ersetzt. (_
).
Sonderzeichen in Schemata
Sonderzeichen in benutzerdefinierten Schemata werden je nach Schema unterschiedlich verarbeitet. Diese Konvertierungen beschränken sich nur auf die Schema und haben keinen Einfluss auf die eigentlichen Daten.
Die Behandlung von Sonderzeichen hängt vom Schema ab, wie in der folgenden Tabelle beschrieben. Zu den Sonderzeichen zählen unter anderem die folgenden nicht alphanumerischen Zeichen:
.
_
-
$
#
@
?
Unterstützung für Sonderzeichen durch Integration Studio wird durch die Unterstützung von Sonderzeichen durch den Schema selbst eingeschränkt. Beispielsweise kann ein $
, #
, @
, oder ?
in einem XML Schema oder Knotennamen wird nicht unterstützt, da diese Sonderzeichen von XML nicht unterstützt werden.
Beim Spiegeln eines von einer Datenbank bereitgestellten Schema werden alle Sonderzeichen in einem Schema oder Knotennamen nach Bedarf durch Unterstriche ersetzt, um ein gültiges XML- Schema zu erstellen.
Umgang mit Sonderzeichen in Schemata | Benutzerdefiniert Flat oder Hierarchisch Schema | Hochgeladenes CSV-Schema | Hochgeladenes JSON-Schema | Hochgeladenes XML-Schema |
---|---|---|---|---|
Sonderzeichen auf der Quell- oder Zielseite einer Transformation bleiben unverändert erhalten | ||||
Sonderzeichen auf der Quell- oder Zielseite einer Transformation werden durch ein Fragezeichen ersetzt (? ) | ||||
Sonderzeichen auf der Quell- oder Zielseite einer Transformation werden durch einen Unterstrich ersetzt (_ ) | ||||
Sonderzeichen in einem Script auf einem Zielfeld in einer Transformation werden durch ein Fragezeichen ersetzt (? ) |
CSV-Dateien mit Headern
Wenn Sie eine CSV-Datei mit einer Header als Schema bereitstellen, werden diese Regeln zum Generieren von Spaltennamen angewendet:
- Sonderzeichen werden durch ein Fragezeichen ersetzt (
?
). - Leerzeichen werden durch einen Unterstrich ersetzt (
_
). - Wenn ein Spaltenname leer ist, wird er ersetzt durch
f1
,f2
,f3
, und so weiter. - Wenn ein Spaltenname mit einer Zahl beginnt, wird ihm ein Unterstrich vorangestellt. (
_
). - Wenn ein Spaltenname wiederholt wird, wird ihm Folgendes angehängt:
2
,3
,4
, und so weiter.
Datentypen
In diesen Abschnitten wird die Unterstützung bestimmter Datentypen durch Jitterbit beschrieben. Alle in Jitterbit Scripts unterstützten Datentypen finden Sie unter Datentypen in Jitterbit Script.
Datentypen mit unbegrenzter Genauigkeit
Datentypen mit unbegrenzter Genauigkeit, wie XML-Dezimalzahlen, werden in Double-Datentypen konvertiert und unterliegen daher einer Genauigkeitsbeschränkung, die infolgedessen Daten abschneiden könnte.
Die Genauigkeitsbeschränkung liegt im Bereich der Mindest- und Höchstwerte eines vorzeichenbehafteten Long-Werts, also zwischen –2.147.483.648 und 2.147.483.647. Wenn dieser Bereich außerhalb liegt, sollten Sie stattdessen einen String-Datentyp verwenden, um das Abschneiden von Daten zu vermeiden.
Nicht-primitive Datentypen
Die primitiven Datentypen boolean
, date
, double
, float
, integer
, long
, Und string
und der nicht-primitive Datentyp decimal
werden in allen Schema unterstützt. Beim Erstellen oder Bearbeiten eines benutzerdefinierten flat oder hierarchisch Schema oder das Bearbeiten eines in einer Transformation hochgeladenen Schema, stehen diese Datentypen zur Auswahl in der Dropdown-Liste Typ. Für neue benutzerdefinierte Schemas können andere nicht primitive Datentypen wie datetime
werden nicht unterstützt.
Allerdings werden auch andere nicht-primitive Datentypen für Schemata unterstützt, die automatisch aus einem vom Connector generierten Schema generiert werden oder wurden von einem solchen Schema gespiegelt. Nachdem sie generiert wurden, können solche Schemata auch manuell im benutzerdefinierten Schema bearbeitet werden. Wenn das Schema nicht-primitive Datentypen enthält, werden diese beim Bearbeiten eines solchen Schema auch in der Dropdownliste Typ aufgeführt.
Nullwerte
Felder mit einem Nullwert werden in das resultierende Schema aufgenommen, obwohl sie keine Daten enthalten. Da sie auch keinen definierten Datentyp haben, werden diese Felder so behandelt, als ob sie einen Zeichenfolgendatentyp hätten.
XML- Schema Namespaces
Namespaces in XML-Schemata werden unterstützt. Wenn in einem XML Schema mehr als ein Namespace verwendet wird, konvertiert der Jitterbit-Agent das XML- Schema während der Verarbeitung in mehrere XSD-Dateien.
Fehlerbehebung
Aufgrund von Änderungen in den Harmony-Versionen 10.25 und 10.27, kann es sein, dass Projekte, die vor diesen Versionen erstellt wurden, ein anderes Verhalten aufweisen. Diese Änderungen betreffen XML-Schemas, die gespiegelt und wirken sich am wahrscheinlichsten auf Zuordnungen aus, die XML-Funktionen verwenden, die Namespaces beinhalten, wie zum Beispiel SelectNodes
Funktion. In diesem Fall sind Zuordnungen, die zuvor gültig waren, jetzt möglicherweise ungültig und weisen einen Fehler in Bezug auf die Syntax der XML-Funktion auf.
Vergleichen Sie die Unterschiede zwischen diesem Beispiel eines gespiegelten XML- Schema vor 10.25 und einem in 10.25 oder höher erstellten Schema:
- Beispiel XML-Schema vor 10.25: In Projekten, die vor 10.25 erstellt wurden, verwenden gespiegelte XML-Schemata das Standard-Namespace-Präfix für XML-Dokumente:
xsi
. Wie oben rot hervorgehoben,xmlns:xsi
deklariert den Namespace und nicht zugeordnete Felder werden im Schema mit dem Attributxsi:nil="true"
. - Beispiel XML-Schema in 10.25 und höher: In Projekten, die in 10.25 und höher erstellt und oben grün hervorgehoben wurden, verwenden gespiegelte XML-Schemata das Namespace-Präfix
ns
um einen qualifizierten Namespace zu deklarieren. Nicht zugeordnete Felder werden im Schema nicht angezeigt.
Wenn Sie in den Versionen 10.25 und 10.26 importiert ein Projekt mit einem gespiegelten XML- Schema, das vor 10.25 erstellt wurde, wurde das Schema erneut verarbeitet und geändert, um das qualifizierte Namespace-Präfix zu verwenden.
Ab Version 10.27 behalten importierte Projekte, deren gespiegelte XML-Schemas vor 10.25 erstellt wurden, das Standardpräfix des XML- Schema Namespaces bei, sodass das Schema mit dem Schema identisch ist, das es erstellt hat. Diese Änderung bedeutet, dass alle Projekte vor 10.25, die in die aktuelle Version importiert werden, wie ursprünglich vorgesehen funktionieren sollten.
Um eine Aktualisierung eines XML- Schema vor 10.25 zu erzwingen, damit das aktualisierte Namespace-Präfix verwendet wird, können Sie das Schema neu generieren, indem Sie es aktualisieren oder die Aktivität, die das Schema bereitstellt, neu konfigurieren.
Selbstschließende Tags im XML- Schema
Selbstschließende Tags für Elemente in XML-Schemata werden durch einige Manipulationen des zur Generierung des Schema verwendeten Beispiel-XML unterstützt. Um das XML-Element in der Payload ohne zugeordneten Wert zu senden, können Sie eine Jitterbit-Funktion und eine Jitterbit-Variable wie unten beschrieben verwenden.
Bearbeiten des Beispiel-XML
Eine Manipulation ist erforderlich, wenn eine XML-Beispieldatei eine Kurzschreibweise für ein öffnendes und schließendes Tag in einem Element wie diesem verwendet:
<tag/>
Wenn eine solche Abkürzung direkt in einem XML- Schema verwendet wird, kann der Knoten nicht zugeordnet werden, wenn er als Schema einer Transformation verwendet wird.
Um das Problem zu beheben, bearbeiten Sie das Beispiel-XML, das zum Generieren des Schema verwendet wird, um die öffnenden und schließenden Tags rund um das Element zu erweitern, und geben Sie einen Beispielwert an, sodass dem Element ein Datentyp zugewiesen wird:
<tag>example</tag>
Das Element wird dann als Feld im XML Schema angezeigt und Sie können es, wenn es als Schema in einer Transformation verwendet wird, diesem Feld zuordnen.
Zuordnung zum XML-Feld
Wenn Sie kein Quellobjekt oder keine Variable haben, die Sie dem Zielfeld zuordnen können, können Sie die Jitterbit-Funktion Null
im Transformation, das als zugeordneter Wert verwendet werden soll:
<trans>
Null()
</trans>
Legen Sie vor der Transformation mithilfe des XML- Schema eine dieser Jitterbit-Variablen fest (je nachdem, welche für Ihren Anwendungsfall geeignet ist), um zu steuern, was gesendet wird:
-
Leeres XML: Um einen leeren XML-Knoten in der Payload zu senden, verwenden Sie
jitterbit.target.xml.include_empty_xml
:$jitterbit.target.xml.include_empty_xml=true;
-
Null-XML: Um einen Nullwert in der XML- Payload zu senden, verwenden Sie
jitterbit.target.xml.include_null_xml
:$jitterbit.target.xml.include_null_xml=true;
-
Leeres XML ausschließen: Um einen leeren XML-Knoten mit einem booleschen Datentyp auszuschließen, verwenden Sie
jitterbit.target.xml.exclude_empty_data
:$jitterbit.target.xml.exclude_empty_data=true;