Kontrollelemente in der Zielstruktur für die XML-Erzeugung
Um den Aufbau von XML-Elementen in der Zielstruktur steuern zu können, werden Eigenschaften in Zielstrukturknoten/Zielstrukturfeldern, sowie spezielle Zielstrukturfelder, mit reservierten Namensendungen verwendet.
Eigenschaften in Zielstrukturknoten
"XML Namespace": Über diese Eigenschaft kann dem Element, welches aus dem Knoten erzeugt wird, ein XML-Namespace zugeordnet werden, z. B: soapenv. Alle im Knoten enthaltenen Elemente bekommen so automatisch den selben Namespace, insofern dort kein anderer gesetzt ist. Zusätzlich kann über diese Eigenschaft auch ein Namespace definiert werden. Beispiel: soapenv=http://schemas.xmlsoap.org/soap/envelope/. Soll kein Namespace angegeben werden obwohl die Eigenschaft Use namespace Inheritance gesetzt ist, muss DEFAULT eingetragen werden. Um einen Default-Namespace zu definieren (z. B. <element xmlns="http://tempuri.org/"> ) muss die Eigenschaft wie folgt gesetzt werden: DEFAULT=http://tempuri.org/
"XML/JSON Behandlung": Diese Eigenschaft steuert, in welcher Form der Knoten in das XML aufgenommen wird. Folgende Einstellungen sind möglich:
Normal: Der Knoten wird als Element im XML erzeugt.
Exkludieren: Der Knoten wird bei der Erzeugung ignoriert und somit gar nicht betreten.
Transparent: Der Knoten selbst erzeugt kein XML Element, aber der Inhalt im Knoten wird berücksichtigt.
Array: (Dieser Wert ist nicht relevant für diese Funktion.)
Array Transparent: (Dieser Wert ist nicht relevant für diese Funktion.)
"Maximum": Erzeugt ein Mapping mehrere Datenblätter, dann wird ein Knoten über diese Datenblätter hinweg betrachtet mehrfach erzeugt. Hat nun der Knoten den Wert 1 bei der Knoten-Eigenschaft Maximum, dann wird das dem Knoten entsprechende Element im XML nur einmal erzeugt, die Felder des mehrfach vorhandenen Knoten werden im einfach vorhandenen XML-Element alle untereinander gelistet. Ist dieses Verhalten nicht erwünscht, dann z. B. einfach den Wert 99999 verwenden für Eigenschaft Maximum. Hier ein angedeutetes Beispiel:
Eigenschaften in Zielstrukturfeldern
"XML Namespace": Über diese Eigenschaft kann dem Element, welches aus dem Feld erzeugt wird, ein XML-Namespace zugeordnet werden, z. B: soapenv. Zusätzlich kann über diese Eigenschaft auch ein Namespace definiert werden. Beispiel: soapenv=http://schemas.xmlsoap.org/soap/envelope/. Soll kein Namespace angegeben werden obwohl die Eigenschaft gesetzt ist, muss DEFAULT eingetragen werden.
Beispiel zur Zielknoten-Eigenschaft "XML/JSON Behandlung"
Gegeben ist folgende Zielstruktur.
Der Knoten root#1 ist bei der XML Behandlung als Root definiert. Anhand der Änderung der Behandlung im Knoten user#3 wird gezeigt, welche Auswirkungen die unterschiedlichen Parameter haben. Folgende XML-Datei wird beim gegebenen Mapping ausgegeben, mit folgender Behandlung im user#3-Knoten.
Normal
Es wird jeder Wert und Knoten ausgegeben.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
root
>
<
record
art
=
"root"
type
=
"map"
>
<
scm
:user
xmlns:scm
=
"http://scm.de"
scm:type
=
"object"
>
<
scm
:name
scm:type
=
"String"
>name</
scm
:name>
<
scm
:givenName
scm:type
=
"String"
>given</
scm
:givenName>
</
scm
:user>
<
items
type
=
"array"
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>abc</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>cde</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
</
items
>
<
persons
test
=
"fix"
>
<
name
>20131018</
name
>
<
ignore
test
=
"fix"
/>
</
persons
>
</
record
>
</
root
>
Transparent
Der Knoten wird nicht mehr ausgegeben, aber die Felder im Knoten.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
root
>
<
record
art
=
"root"
type
=
"object"
>
<
name
type
=
"String"
>name</
name
>
<
givenName
type
=
"String"
>given</
givenName
>
<
items
type
=
"array"
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>abc</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>cde</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
</
items
>
<
persons
test
=
"fix"
>
<
name
>20131018</
name
>
<
ignore
test
=
"fix"
/>
</
persons
>
</
record
>
</
root
>
Exkludieren
Der Knoten user#3, sowie seine dazugehörigen Feldwerte, werden nicht ausgegeben.
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
root
>
<
record
art
=
"root"
type
=
"map"
>
<
items
type
=
"array"
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>abc</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
<
arrayItem
type
=
"object"
>
<
item
type
=
"String"
>cde</
item
>
<
itemType
type
=
"String"
>ALL</
itemType
>
</
arrayItem
>
</
items
>
<
persons
test
=
"fix"
>
<
name
>20131018</
name
>
<
ignore
test
=
"fix"
/>
</
persons
>
</
record
>
</
root
>