xmlscripting-de
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
xmlscripting-de [2019/10/14 19:01] – [Variablen-Namen] hermannk | xmlscripting-de [2024/02/16 01:35] (current) – rainerk | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== | + | ====== |
[[: | [[: | ||
[[german|Inhalt]] -> [[german# | [[german|Inhalt]] -> [[german# | ||
- | * [[actions-de|Aktionen definieren]] | [[actionctrl-de|Aktions-Steuerung]] | [[actionctrl-de# | + | * [[actions-de|Aktionen definieren]] | [[actionctrl-de|Aktions-Steuerung]] | [[actionctrl-de# |
- | * [[: | + | * [[: |
* [[: | * [[: | ||
- | * [[: | + | * [[: |
- | \\ | + | |
- | \\ | + | | [[: |
+ | |||
+ | {{: | ||
+ | |||
+ | ^ NICHT FÜR UNERFAHRENE ANWENDER ! ! ! ^ | ||
+ | \\ | ||
- | {{: | ||
- | | Ab //Rev. 15.429// ist der XML-Editor codesensitiv mit Farb-Darstellung von Knoten, Statements, Parametern, Werten, Kommentaren usw.|\\ | ||
- | | ||
=====Warnung===== | =====Warnung===== | ||
- Standard-Rocrail-Funktionen nicht durch XMLScript ersetzen. | - Standard-Rocrail-Funktionen nicht durch XMLScript ersetzen. | ||
Line 24: | Line 26: | ||
\\ | \\ | ||
===== Einführung ===== | ===== Einführung ===== | ||
+ | | :!: Es sollten immer erst die grundlegenden Rocrail-Funktionen bekannt sein, __//bevor mit XMLScript das Rad neu erfunden wird.//__ | | ||
+ | |||
XML-Skripte können in Kombination mit der Aktion __**[[: | XML-Skripte können in Kombination mit der Aktion __**[[: | ||
Das primäre Ziel von XML-Skripten ist die Vereinfachung und die Reduzierung der Anzahl von Aktionen und Bedingungen.\\ | Das primäre Ziel von XML-Skripten ist die Vereinfachung und die Reduzierung der Anzahl von Aktionen und Bedingungen.\\ | ||
- | Das für Skripting verwendete XML ist das gleiche wie im __**[[https:// | + | Das für Skripting verwendete XML ist das gleiche, wie im __**[[https:// |
\\ | \\ | ||
Line 38: | Line 42: | ||
=====Empfehlung===== | =====Empfehlung===== | ||
- | * Die XmlScripts | + | * Die XmlScripte |
* Nicht versuchen, den Automatik-Modus zu überlisten; | * Nicht versuchen, den Automatik-Modus zu überlisten; | ||
* Objekt-Kennungen mit Leerzeichen werden nicht unterstützt; | * Objekt-Kennungen mit Leerzeichen werden nicht unterstützt; | ||
Line 64: | Line 68: | ||
\\ | \\ | ||
=====Auf dem Server editieren===== | =====Auf dem Server editieren===== | ||
- | Das Erzeugen und Editieren von XmlScripten | + | Das Erzeugen und Editieren von XMlScripten |
| {{: | | {{: | ||
| Öffnen des XmlScript-Editors. \\ Alternativ kann der Editor auch in der Übersicht \\ durch Doppelklick auf eine Aktion geöffnet werden. | | Öffnen des XmlScript-Editors. \\ Alternativ kann der Editor auch in der Übersicht \\ durch Doppelklick auf eine Aktion geöffnet werden. | ||
- | Wenn das XmlScript | + | Wenn das XMlScript |
<code xml> | <code xml> | ||
<?xml version=" | <?xml version=" | ||
Line 110: | Line 114: | ||
%% | %% | ||
\\ | \\ | ||
- | __** Das macht das XmlScript | + | __** Das macht das XMlScript |
+ | \\ | ||
+ | \\ | ||
+ | =====Aufruf-Parameter===== | ||
+ | Auf Aufruf-Parameter kann durch Variablen mit der Benamung " | ||
+ | Siehe: __**[[: | ||
+ | Beispiel-Schnipsel: | ||
+ | <code xml> | ||
+ | < | ||
+ | <if condition=" | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
\\ | \\ | ||
Line 170: | Line 189: | ||
</ | </ | ||
</ | </ | ||
- | Wenn die while-Schleife endlos ist, wird sie gestoppt, wenn das max-Attribut erreicht wird, das auf 100 voreingestellt ist.\\ | + | Wenn die while-Schleife endlos ist, wird sie gestoppt, wenn das max-Attribut erreicht wird, das auf 10 voreingestellt ist.\\ |
+ | Höhere Werte als 100 werden auf 100 begrenzt, um Serverblockierungen und Unfälle automatisch fahrender Lokomotiven zu vermeiden.\\ | ||
\\ | \\ | ||
Line 260: | Line 281: | ||
Funktionen müssen auf der ersten Ebene des XMLScripts deklariert werden und eine Kennung (ID) haben.\\ | Funktionen müssen auf der ersten Ebene des XMLScripts deklariert werden und eine Kennung (ID) haben.\\ | ||
Aufruf (call) mit der gewünschten ID: ''< | Aufruf (call) mit der gewünschten ID: ''< | ||
- | Mehrere Funktionen sind erlaubt.\\ | + | Mehrere Funktionen sind erlaubt.\\ |
+ | Auf Parameter kann durch '' | ||
<code xml> | <code xml> | ||
< | < | ||
- | < | + | < |
<tx id=" | <tx id=" | ||
</ | </ | ||
Line 296: | Line 318: | ||
==== break ==== | ==== break ==== | ||
- | Beendet eine foreach-Schleife mit oder ohne Bedingung. cmt=“reason” kann für die Ablaufverfolgung (Tracing) angegeben werden. \\ | + | Beendet eine foreach- und while-Schleife mit oder ohne Bedingung. cmt=“reason” kann für die Ablaufverfolgung (Tracing) angegeben werden. \\ |
Diese Anweisung hat keinen Effekt, wenn sie nicht innerhalb einer foreach-Schleife erfolgt. \\ | Diese Anweisung hat keinen Effekt, wenn sie nicht innerhalb einer foreach-Schleife erfolgt. \\ | ||
<code xml> | <code xml> | ||
Line 341: | Line 363: | ||
<code xml> | <code xml> | ||
< | < | ||
- | <sub file=" | + | <sub file=" |
</ | </ | ||
</ | </ | ||
- | Wenn die Funktions-ID auf Unterstrich, | + | Wenn die Funktions-ID auf Unterstrich, |
Wenn keine Funktions-ID eingestellt ist, wird die %oid% verwendet, um eine passende Funktion zu finden.\\ | Wenn keine Funktions-ID eingestellt ist, wird die %oid% verwendet, um eine passende Funktion zu finden.\\ | ||
+ | Auf Parameter kann durch '' | ||
\\ | \\ | ||
Bibliotheks-Beispiel **lib1.xml**: | Bibliotheks-Beispiel **lib1.xml**: | ||
Line 355: | Line 378: | ||
</ | </ | ||
</ | </ | ||
- | Die Funktions-ID muss zum Aufruf von Funktionen aus einer XmlScript-Bibliotheks-Datei verwendet werden.\\ | + | Die Funktions-ID muss zum Aufruf von Funktionen aus einer XMlScript-Bibliotheks-Datei verwendet werden.\\ |
- | Sehr hilfreich, wenn mehrere | + | Sehr hilfreich, wenn mehrere |
\\ | \\ | ||
Line 362: | Line 385: | ||
====query==== | ====query==== | ||
Mit der **query**-Anweisung (Abfrage) kann eine Variable verwendet werden, um das Attribut Text oder Integer-Wert eines bestimmten Objekts zu erhalten.\\ | Mit der **query**-Anweisung (Abfrage) kann eine Variable verwendet werden, um das Attribut Text oder Integer-Wert eines bestimmten Objekts zu erhalten.\\ | ||
+ | Ein **query** bietet nur Objekt-Eigenschaften, | ||
<code xml> | <code xml> | ||
<query vr=" | <query vr=" | ||
Line 374: | Line 398: | ||
Anstelle von '' | Anstelle von '' | ||
\\ | \\ | ||
- | | :!: Query-Variable müssen XMLScript-eindeutig sein, um unerwartete Ergebnisse zu vermeiden. :!: | | + | | Query-Variable müssen XMLScript-eindeutig sein, um unerwartete Ergebnisse zu vermeiden. :!: | |
===Funktions-Beispiel=== | ===Funktions-Beispiel=== | ||
Die Lok-Kennung, | Die Lok-Kennung, | ||
- | Dr Funktions-Befehl erfordert eine Lok-Kennung, | + | Der Funktions-Befehl erfordert eine Lok-Kennung, |
<code xml> | <code xml> | ||
< | < | ||
Line 387: | Line 411: | ||
\\ | \\ | ||
====set==== | ====set==== | ||
- | Mit der **set**-Anweisung (Einstellen)kann eine Variable verwendet werden, um das Attribut Text oder Integer-Wert eines bestimmten Objekts zu setzen.\\ | + | Mit der **set**-Anweisung (Einstellen)kann eine Variable verwendet werden, um das Attribut Text oder Integer-Wert eines bestimmten Objekts, abhängig von '' |
<code xml> | <code xml> | ||
<set vr=" | <set vr=" | ||
Line 436: | Line 460: | ||
| > | größer als; Zahlen | | | > | größer als; Zahlen | | ||
| < | kleiner als; Zahlen | | | < | kleiner als; Zahlen | | ||
+ | | ~ | enthält; Text (@var_1 ~ @var_2 ist wahr, wenn der Text in @var_2 im Text von @var_1 enthalten ist.) ab rocrail 2.1.1010 | ||
Line 471: | Line 496: | ||
| Rückmelder | fb | true, false, on, off | **on** und **off** sind alternativ: **true** = **on**; **false** = **off** | | | Rückmelder | fb | true, false, on, off | **on** und **off** sind alternativ: **true** = **on**; **false** = **off** | | ||
| Ausgang | co | on, off, active | | | | Ausgang | co | on, off, active | | | ||
+ | | Ortschaft | location | free | Der ' | ||
| Block | bk | free, !free, occupied, closed, open, reserved | | | | Block | bk | free, !free, occupied, closed, open, reserved | | | ||
| Drehsscheibe | tt | free, occupied, closed, open, reserved, #, pending | Das Zeichen **#** steht für die aktuelle Brückenposition. \\ Der Status **pending** ist wahr, während sich die Brücke bewegt. | | | Drehsscheibe | tt | free, occupied, closed, open, reserved, #, pending | Das Zeichen **#** steht für die aktuelle Brückenposition. \\ Der Status **pending** ist wahr, während sich die Brücke bewegt. | | ||
Line 476: | Line 502: | ||
| System | sys | go, stop | | | | System | sys | go, stop | | | ||
| Automode | auto | on, off | | | | Automode | auto | on, off | | | ||
- | | Lokomotive | lc | fwd, rev, +, -, min, mid, cruise, max, block, "// | + | | Lokomotive | lc | fwd, rev, +, -, min, mid, cruise, max, block, "// |
- | | Wagen | car | empty, loaded, maintenance, | + | | Wagen | car | empty, loaded, maintenance, |
| Frachtschein | waybill | waiting, shipping, delivered, "// | | Frachtschein | waybill | waiting, shipping, delivered, "// | ||
| Text | tx | on, off | Falls der Typ " | | Text | tx | on, off | Falls der Typ " | ||
Line 493: | Line 519: | ||
|< >| | |< >| | ||
^ Objekt-Name ^ Objekt-Typ ^ Befehle ^ Status ^ Hinweise ^ Beispiel ^ | ^ Objekt-Name ^ Objekt-Typ ^ Befehle ^ Status ^ Hinweise ^ Beispiel ^ | ||
- | | Lok | lc | Alle https:// | + | | Lok | lc | Alle https://wiki.rocrail.net/ |
- | | Funktion | fn | Alle und fndesc, fncmd | | Das Funktionsänderungs-Attribut (fnchanged) oder die Finktons-Beschreibung (fndesc) signalisieren, | + | | Funktion | fn | Alle und fndesc, fncmd, group 1..7 | | Das Funktionsänderungs-Attribut (fnchanged) oder die Funktions-Beschreibung (fndesc) signalisieren, |
- | | Weiche | sw | Alle | | | <sw id=" | + | | Weiche | sw | Alle | | | <sw id=" |
| Signal | sg | Alle | | | | Signal | sg | Alle | | | ||
| Zubehör-Gruppe | accgroup | on, off, flip | | | | Zubehör-Gruppe | accgroup | on, off, flip | | | ||
- | | Ausgang | co | Alle | | | + | | Ausgang | co | Alle | | | <co id=" |
| Gleisspannung | powercmd | on, off | | Die ID ist die Booster-Kennung. Wenn leer, gilt der Befehl für alle Booster | | | Gleisspannung | powercmd | on, off | | Die ID ist die Booster-Kennung. Wenn leer, gilt der Befehl für alle Booster | | ||
| Block | bk | Alle, reservieren | open, closed | Im Fall des Reservieren-Befehl Lok-Kennung (lcid) verwenden. | %%<bk id=" | | Block | bk | Alle, reservieren | open, closed | Im Fall des Reservieren-Befehl Lok-Kennung (lcid) verwenden. | %%<bk id=" | ||
- | | Rückmelder | fb | Alle, on, off, flip | | | + | | Rückmelder | fb | Alle, on, off, flip | | | <fb id=" |
| Fahrstraße | st | go, lock, free, classset, classadd, classdel | | Die Befehle " | | Fahrstraße | st | go, lock, free, classset, classadd, classdel | | Die Befehle " | ||
- | | Text | tx | showon, showoff | | Update-Ereignis durch Format-Attribut. \\ Die optionalen **bkid** und **lcid** können auch im Befehl verwendet werden. | %%<tx id=" | + | | Text | tx | showon, showoff, blink, on, off, click | | Update-Ereignis durch Format-Attribut. \\ Die optionalen **bkid** und **lcid** können auch im Befehl verwendet werden. | %%<tx id=" |
- | | Variable | vr | random, start, stop \\ start, length (for substring) | | Setzen durch Attribute: value=" | + | | Variable | vr | random, start, stop \\ start, length (for substring) | | Setzen durch Attribute: value=" |
| Aktionskontrolle | actionctrl | | |Die Kennung in der Aktionskontrolle ist eine Referenz auf ein existierendes Objekt. Bedingungs-Kind-Knoten können hinzugefügt werden. | | | Aktionskontrolle | actionctrl | | |Die Kennung in der Aktionskontrolle ist eine Referenz auf ein existierendes Objekt. Bedingungs-Kind-Knoten können hinzugefügt werden. | | ||
| Fahrdienstleiter | operator | emptycar, loadcar, addcar, leavecar. | |Im Wagen-Kennungs-Attribut (carids) muss eine kommaseparierte Liste von Wagen-Kennungen spezifiziert werden. | | | Fahrdienstleiter | operator | emptycar, loadcar, addcar, leavecar. | |Im Wagen-Kennungs-Attribut (carids) muss eine kommaseparierte Liste von Wagen-Kennungen spezifiziert werden. | | ||
| System | sys | Alle https:// | | System | sys | Alle https:// | ||
| Automat | auto | Alle https:// | | Automat | auto | Alle https:// | ||
- | | Wagen | car | empty, loaded, maintenance, | + | | Wagen | car | empty, loaded, maintenance, |
| Aufstellblock | sb | Alle https:// | | Aufstellblock | sb | Alle https:// | ||
| Fiddle Yard | seltab | Alle https:// | | Fiddle Yard | seltab | Alle https:// | ||
| Ortschaft | location | Alle https:// | | Ortschaft | location | Alle https:// | ||
- | | Uhr | clock | Alle https:// | + | | Uhr | clock | Alle https:// |
| Drehscheibe | tt | Alle https:// | | Drehscheibe | tt | Alle https:// | ||
| Extern | ext | Alle https:// | | Extern | ext | Alle https:// | ||
- | | Wetter | weather | setweather, weathertheme | | | + | | Wetter | weather | setweather, weathertheme, go, stop | | |
- | | Licht | light | flip, enable, disable | Aktiviert ein Licht von LightControl. | | + | | Licht | light | flip, enable, disable |
- | | Model | model | Alle https:// | + | | Licht-Steuerung | lightctrl | go, stop | |Aktiviert / deaktiviert die Licht-Steuerung (LightControl). | %%< |
+ | | Model | model | Alle https:// | ||
+ | | Geschwindigkeits-\\ Messstrecke | mv | reset, sets1, sets2, setdistance, | ||
\\ | \\ | ||
Line 549: | Line 577: | ||
</ | </ | ||
\\ | \\ | ||
+ | =====System-Variablen===== | ||
+ | siehe: [[https:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
=====Variablen-Formatierung===== | =====Variablen-Formatierung===== | ||
Mit dem Format-Attribut ist es möglich, Variablen-Inhalt auf die gleiche Art zu formatieren, | Mit dem Format-Attribut ist es möglich, Variablen-Inhalt auf die gleiche Art zu formatieren, | ||
Line 573: | Line 607: | ||
\\ | \\ | ||
=====Variablen-Namen===== | =====Variablen-Namen===== | ||
- | Innerhalb oben beschriebener Grenzen können Variablen-Namen frei gewählt werden; aber es kann vorkommen, daß zwei Gleichname | + | Innerhalb oben beschriebener Grenzen können Variablen-Namen frei gewählt werden; aber es kann vorkommen, daß zwei gleichnamige |
* der ursprüngliche Variablen-Name " | * der ursprüngliche Variablen-Name " | ||
* wird im Script " | * wird im Script " | ||
* wird im Script " | * wird im Script " | ||
+ | \\ | ||
+ | =====Temporäre Variablen===== | ||
+ | Um eine Variable | ||
- | * within script " | + | ====Beispiel==== |
- | + | ||
- | In general variables may be named freely; but as soon as two scripts with the same variable name run at the same time the scripts may not work correctly. In those cases a script specific prefix added to the name of the variable may avoid any confusion: | + | |
- | * change the original variable name from " | + | |
- | * within script " | + | |
- | * within script " | + | |
- | + | ||
- | =====Variables defined as " | + | |
- | As long as a variable does not need to store any values from runtime to runtime of Rocrail those variables can be defined as " | + | |
- | ====Example==== | + | |
<code xml> | <code xml> | ||
< | < | ||
- | <vr id="vr_MSN3_lastUsedLocomotive" value=" | + | <vr id="vr_MSN3_zuletztBenutzteLokomotive" value=" |
- | <vr id=" | + | <vr id=" |
</ | </ | ||
</ | </ | ||
- | The variable | + | Die Variable |
- | The variable | + | Die Variable |
\\ | \\ | ||
xmlscripting-de.1571072499.txt.gz · Last modified: 2019/10/14 19:01 by hermannk