Für den Inhalt cond des Attributs [s-|d-]check eines Elements tt:cond oder tt:cond-var können folgende Bedingungen angegeben werden. Die Operanden der Bedingungen können entweder Datenknoten (nicht in tt:cond-var), Variablen oder Werte sein.
· Datenknoten werden in der Form dnode angegeben.
· Variablen werden in der Form
var(variable)
angegeben, wobei variable eine Variable oder ein Parameter ist.
· Werte werden in der Form
value
angegeben, wobei value ein gemäß den Regeln für ABAP-Werte angegebener Wert ist.
Wenn check als Attribut von tt:cond-var angegeben ist, können keine Datenknoten als Operanden angegeben werden.
Bedingung |
Bedeutung |
exist(dnode) |
Erfüllt, wenn an den Knoten ein ABAP-Datenobjekt angebunden ist. |
initial(dnode|var(variable)) |
Erfüllt, wenn das angebundene ABAP-Datenobjekt inital ist. |
not-initial(dnode|var(variable)) |
Erfüllt, wenn das angebundene ABAP-Datenobjekt nicht inital ist. |
In tt:cond-var ist die Zustandsabfrage exist nicht möglich.
Das Element X wird bei einer Serialisierung nur berücksichtigt, wenn das an ROOT angebundene ABAP-Datenobjekt nicht initial ist.
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<tt:s-cond
check="not-initial(ROOT)">
<X>
<tt:value ref="ROOT" />
</X>
</tt:s-cond>
</tt:template>
</tt:transform>
Vergleiche werden in der Form
dnode|var(variable)|value operator dnode|var(variable)|value
angegeben, wobei folgende Operatoren operator möglich sind:
Vergleichsoperator |
Bedeutung |
= |
Die Bedingung ist erfüllt, wenn der Wert beider Operanden gleich ist. |
!= |
Die Bedingung ist erfüllt, wenn der Wert beider Operanden nicht gleich ist. |
>, > |
Die Bedingung ist erfüllt, wenn der Wert des linken Operanden größer als der Wert des rechten ist. |
>=, >= |
Die Bedingung ist erfüllt, wenn der Wert des linken Operanden größer als der oder gleich dem Wert des rechten ist. |
< |
Die Bedingung ist erfüllt, wenn der Wert des linken Operanden kleiner als der Wert des rechten ist. |
<= |
Die Bedingung ist erfüllt, wenn der Wert des linken Operanden kleiner als der oder gleich dem Wert des rechten ist. |
Das Zeichen < muss in XML immer durch < dargestellt werden. Das Zeichen > kann dagegen direkt und durch > dargestellt werden.
Das Element X wird bei einer Serialisierung nur berücksichtigt, wenn der Wert des an ROOT1 angebundenen ABAP-Datenobjekts kleiner oder gleich dem Wert des an ROOT2 angebundenen ABAP-Datenobjekts ist.
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root
name="ROOT1"/>
<tt:root
name="ROOT2"/>
<tt:template>
<tt:ref
name="ROOT1">
<tt:s-cond check="$ref <=
ref('.ROOT2')">
<X>
<tt:value/>
</X>
</tt:s-cond>
</tt:ref>
</tt:template>
</tt:transform>
Beachten Sie, dass die Datenwurzel .ROOT2 in der Bedingung nicht direkt angegeben werden kann, sondern nur über ref('.ROOT2').
Bedingungen können mit not negiert und mit and oder or verknüpft werden, wobei and stärker bindet als or. Das Ergebnis einer solchen Operation ist wieder eine Bedingung.
Operation |
Bedeutung |
not(cond) |
Erfüllt, wenn cond nicht erfüllt ist. |
cond1 and cond2 |
Erfüllt wenn cond1 und cond2 beide erfüllt sind. |
cond1 or cond2 |
Erfüllt wenn nicht cond1 und cond2 beide nicht erfüllt sind. |
Bedingungen können mit runden Klammern ( ) eingeklammert werden, um die Priorisierung zu ändern.
Das Element X wird bei einer Serialisierung nur berücksichtigt, wenn der Wert des an ROOT1 angebundenen ABAP-Datenobjekts zwischen den Werten der an ROOT2 und ROOT3 angebundenen ABAP-Datenobjekte liegt.
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root
name="ROOT1"/>
<tt:root name="ROOT2"/>
<tt:root
name="ROOT3"/>
<tt:template>
<tt:ref
name="ROOT1">
<tt:s-cond check="($ref > ref('.ROOT2')) and ($ref <
ref('.ROOT3'))">
<X>
<tt:value/>
</X>
</tt:s-cond>
</tt:ref>
</tt:template>
</tt:transform>
Beachten Sie, dass die Datenwurzeln .ROOT2 und .ROOT3 in der Bedingung nicht direkt angegeben werden können, sondern nur über ref('.ROOT2') und ref('.ROOT3').