Revision control

++ <?xml version="1.0" encoding="UTF-8"?>
++ <!--
++ Copyright 2011-2012 Jacob Beard, INFICON, and other SCION contributors
++
++ Licensed under the Apache License, Version 2.0 (the "License");
++ you may not use this file except in compliance with the License.
++ You may obtain a copy of the License at
++
++
++ Unless required by applicable law or agreed to in writing, software
++ distributed under the License is distributed on an "AS IS" BASIS,
++ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++ See the License for the specific language governing permissions and
++ limitations under the License.
++ -->
++ <scxml
++ datamodel="ecmascript"
++ version="1.0">
++
++ <datamodel>
++ <data id="x" expr="0"/>
++ </datamodel>
++
++ <state id="a">
++ <onentry>
++ <!-- test if -->
++ <log label="x" expr="x"/>
++ <if cond="x === 0">
++ <assign location="x" expr="10"/>
++ <elseif cond="x === 10"/>
++ <assign location="x" expr="20"/>
++ <else/>
++ <assign location="x" expr="30"/>
++ </if>
++ <log label="x" expr="x"/>
++ </onentry>
++
++ <transition event="t" target="b" cond="x === 10">
++ <assign location="x" expr="x + 1"/>
++ </transition>
++
++ <onexit>
++ <!-- test else -->
++ <log label="x" expr="x"/>
++ <if cond="x !== 10">
++ <assign location="x" expr="x * 3"/>
++ <else/>
++ <assign location="x" expr="x * 2"/>
++ </if>
++ <log label="x" expr="x"/>
++ </onexit>
++ </state>
++
++ <state id="b">
++ <onentry>
++ <!-- test elseif -->
++ <log label="x" expr="x"/>
++ <if cond="x === 0">
++ <assign location="x" expr="100"/>
++ <elseif cond="x === 21"/>
++ <assign location="x" expr="x + 2"/>
++ <assign location="x" expr="x + 3"/>
++ <else/>
++ <assign location="x" expr="200"/>
++ </if>
++
++ <if cond="x === 26">
++ <assign location="x" expr="x + 1"/>
++ </if>
++
++ <if cond="x === 26">
++ <elseif cond="x === 27"/>
++ <assign location="x" expr="x + 1"/>
++ <else/>
++ <assign location="x" expr="x + 10"/>
++ </if>
++
++ <if cond="x === 28">
++ <assign location="x" expr="x + 12"/>
++ <if cond="x === 40">
++ <assign location="x" expr="x + 10"/>
++ </if>
++ </if>
++
++ <if cond="x === 50">
++ <assign location="x" expr="x + 1"/>
++ <if cond="x !== 51">
++ <else/>
++ <assign location="x" expr="x + 20"/>
++ </if>
++ </if>
++
++ <log label="x" expr="x"/>
++ </onentry>
++
++ <transition target="c" cond="x === 71"/>
++ <transition target="f"/>
++ </state>
++
++ <state id="c"/>
++
++ <state id="f"/>
++
++ </scxml>