Hallo Zusammen,
"Dann kein GOTO oder LOOP oder JUMP, also alles sehr gewöhnungsbedürftig."
GOTO oder JUMP (aus welcher Sprache kommt JUMP?). funktionieren auch in XML. Wie aber Edi bereits geschrieben hat, ist das eher eine Unsitte bei der Programmierung. Wenn Du um GOTOs aus welchen Gründen auch immer nicht herum kommst, gibt es ja noch alternativ Makros. Mit denen kannst Du dann zwar nicht noch weiter verschachteln, aber sie helfen Dir komplexe Funktionen einmal zu hinterlegen und sie dann aus einem umfangreichen Code von verschiedenen Stellen heraus aufzurufen. Was anderes mach man mit GOTO (außer natürlich GOTO ENDE) auch nicht.
Wenn Du mit LOOP eine FOR NEXT oder DO WHILE Schleife meinst, geht das auch in XMl. Eigentlich sogar einfacher. So etwas wie eine FOR NEXT Schleife wird in XML immer ausgeführt wenn der Code innerhalb einer Element Anweisung sitzt und nicht an einen Schalter oder eine K: Variable gebunden ist.
Beispiel:
PHP-Code:
<Element>
<Select>
<Value>(L:Generators enabled, bool) if{ (L:Battery volts, percent) 1 + (>L:Battery volts, percent) }</Value>
</Select>
</Element>
In dem Beispiel witd die Variable (L:Battery volts, percent) so lange hochgezählt bis die Variable (L:Generators enabled, bool) False ist. Würdest Du die If Abfrage noch entfernen, hättest Du eine Endlosschleife.
Ähnlich einer FOR NEXT Schleife kann die Bedingung der If Abfrage auch an die Schleife selbst geknüpft sein.
Beispiel:
PHP-Code:
<Element>
<Select>
<Value>(L:Battery volts, percent) 28 < if{ (L:Battery volts, percent) 1 + (>L:Battery volts, percent) }</Value>
</Select>
</Element>
In dem Beispiel zählt die Variable (L:Battery volts, percent) so lange hoch bis sie den Wert 28 erreicht und bleibt dann stehen. Der Code macht so natürlich keinen Sinn und dient nur als Beispiel. Wenn Du jetzt noch mit einer UND Verknüpfung eine weitere Bedingung vor If setzt, wird das aber schon logischer. Dann zählt die Variable wenn der Wert unter 28 ist und eine andere Variable True oder bedingt False ist.
Gruß
Matthias