Re: A state-machine language in XML

Stephane Bortzmeyer <> Fri, 16 March 2007 20:47 UTC

Return-path: <>
Received: from [] ( by with esmtp (Exim 4.43) id 1HSJKp-0003oG-7Q; Fri, 16 Mar 2007 16:47:35 -0400
Received: from [] ( by with esmtp (Exim 4.43) id 1HSJKo-0003o6-2D for; Fri, 16 Mar 2007 16:47:34 -0400
Received: from ([] by with esmtp (Exim 4.43) id 1HSJKf-0003w6-SN for; Fri, 16 Mar 2007 16:47:34 -0400
Received: by (Postfix, from userid 10) id DD06724080E; Fri, 16 Mar 2007 21:47:08 +0100 (CET)
Received: by (Postfix, from userid 1000) id 6B02A12C9F; Fri, 16 Mar 2007 21:45:31 +0100 (CET)
Date: Fri, 16 Mar 2007 21:45:31 +0100
From: Stephane Bortzmeyer <>
Message-ID: <>
References: <>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
X-Transport: UUCP rules
X-Operating-System: Debian GNU/Linux 3.1
User-Agent: Mutt/1.5.9i
X-Spam-Score: 0.1 (/)
X-Scan-Signature: 39bd8f8cbb76cae18b7e23f7cf6b2b9f
Subject: Re: A state-machine language in XML
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: DIscussion on state machine specification in IETF protocols <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>

On Thu, Feb 22, 2007 at 03:52:13PM +0100,
 Stephane Bortzmeyer <> wrote 
 a message of 19 lines which said:

> For those who would prefer a XML syntax:

After reading it, I can summary:

The language is more powerful than Cosmogol. It includes things like
guards (conditions for the firing of the a transition, something which
is missing from Cosmogol, partly because it requires a language to
express boolean expressions; State Chart XML uses JavaScript).

Its syntax is obviously very different :-) And it uses the word
"target" instead of "next" for the state after the transition.

It has substates (using XML natural taste for recursivity), something
which could be useful in Cosmogol (X509, for instance, is described by
embedded state machines).

It has rich control abilities, again using JavaScript expressions.

The example would look like:

<state id="Open">
  <transition event="Close it" target="Closed"/>
  <transition event="Blow it out" target="Gone"/>

<state id="Closed">
  <transition event="Open it" target="Open"/>
  <transition event="Blow it out" target="Gone"/>

<state id="Gone"/>

Cosmogol mailing list