CARVIEW |
State Chart XML (SCXML): State Machine Notation for Control Abstraction Recommendation Errata
Last updated $Date: 2016/12/28 14:46:27 $
- This document records known errors in the SCXML Recommendation:
- https://www.w3.org/TR/2015/REC-scxml-20150901/
Copyright © 2015-2016 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.
About the SCXML Recommendation
The SCXML Recommendation has been produced by the W3C Voice Browser Working Group as part of the activity of the W3C Ubiquitous Web Domain.
This document lists known errata to the Recommendation. Each entry has the following information:
- A unique entry number
- The date it was added to the errata page.
- Whether the entry is considered an important error, a minor typographical error, a clarification, or a known problem with the document itself.
- The section referred to.
- A description of the problem and correction if applicable.
Please send general comments about this document to the public mailing list at www-voice@w3.org. The archive for the list is accessible online.
Conventions
Added text marked ↑new, added text↑. Changed text marked ↑changed text↑. Removed text marked ↓deleted text↓.
Proposed and Pending Errata
None.
Rejected proposed errata
Known errors as of 28 December 2016
- E1 (13 January 2016): Appendix C.1.2 Example 3 - 'sendid' attribute wrongly used instead of 'id' - Editorial
- E2 (13 January 2016): Appendix B. Data Models - Editorial
- E3 (5 February 2016): 3.12.1 Event Descriptors - event name matching example - Editorial
- E4 (25 February 2016): Appendix D - misleading description on interepret() procedure - Editorial
- E5 (25 February 2016): Appendix D - typo in the example code of interpret() procedure - Editorial
- E6 (25 February 2016): Appendix G.1 - typo in example SCXML code, "Main.scxml" - Editorial
- E7 (23 December 2016): Appendix G.5 - typo in example SCXML code, "Traffic Report" and "Blackjack" - Editorial
Errata
E1: Appendix C.1.2 Example 3 - 'sendid' attribute wrongly used instead of 'id'
In section C.1.2, "Example 3" contains an incorrect attribute name.
<send sendid="send-123" .../>
should be:
<send id="send-123".../>
That is, the <send> element has an 'id' attribute, and does not have a 'sendid' attribute.
Email trail:
- None
E2: Appendix B. Data Models - misleading description on a data model
The second paragraph of Appendix B should read:
The definition of a data model MUST:
- Specify the boolean expression language, which is used, for example, as the value of the 'cond' attribute in <transition>, <if> and <elseif>. This language MUST not have side effects and MUST include the predicate 'In', which takes a single argument, the id of a state in the enclosing state machine, and returns 'true' if the state machine is in that state.
- Specify the location expression language, which is used, for example, as the value of the 'location' attribute of the <assign> tag.
- Specify the value expression language which is used, for example, as the value of the 'expr' attribute of the <data> and <assign> elements.
- Specify the scripting language used inside the <script> element.
instead of:
The definition of a data model MUST:
- Specify the boolean expression language used as the value of the 'cond' attribute in <transition>, <if> and <elseif> This language MUST not have side effects and MUST include the predicate 'In', which takes a single argument, the id of a state in the enclosing state machine, and returns 'true' if the state machine is in that state.
- Specify the location expression language that is used as the value of the 'location' attribute of the <assign> tag.
- Specify the value expression language that is used as the value of the 'expr' attribute of the <data> and <assign> elements.
- Specify the scripting language used inside the <script> element
The existing language in the specification is misleading and can be read as saying that the attributes that are mentioned are the only places that the various expression languages are used. That is not necessarily the case. The attributes are mentioned only as examples.
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0001.html
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0002.html
E3: 3.12.1 Event Descriptors - event name matching example
The fourth paragraph of section 3.12.1 on the example of event name match should read:
For example, a transition with an 'event' attribute of "error foo" will match event names "error", "error.send", "error.send.failed", etc. (or "foo", "foo.bar" etc.) but would not match events named "errors.my.custom", "errorhandler.mistake", "errOr.send" or "foobar".
instead of:
For example, a transition with an 'event' attribute of "error foo" will match event names "error", "error.send", "error.send.failed", etc. (or "foo", "foo.bar" etc.) but would not match events named "errors.my.custom", "errorhandler.mistake", "error.send" or "foobar".
The text in the specification erroneously has "error.send" in place of "errOr.send".
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0003.html
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0004.html
E4 (25 February 2016): Appendix D - misleading description on interepret() procedure
In the prose introduction to the interpret() procedure, the following sentence is incorrect:
Finally call enterStates on the initial configuration, set the global running variable to true and start the interpreter's event loop.
It should read:
Finally call enterStates on a one item list consisting of the <transition> inside the <initial> element that has been created from the 'initial' attribute on <scxml>. Then set the global running variable to true and start the interpreter's event loop.
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0006.html
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0007.html
E5 (25 February 2016): Appendix D - typo in the example code of interpret() procedure
The procedure interpret() fails to set the 'binding' global variable, which causes the variable to be unbound when it is accessed in enterStates().
The following statement in interpret():
if doc.binding == "early": initializeDatamodel(datamodel, doc)
should be replaced by:
binding = doc.binding if binding == "early": initializeDatamodel(datamodel, doc)
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0006.html
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0007.html
E6 (25 February 2016): Appendix G.1 - typo in example SCXML code, "Main.scxml"
In the example Main.scxml, there is a transition that incorrectly contains a 'next' attribute instead of a 'target' attribute:
<transition event="done.state.Test2" next="Test3"/>
should be:
<transition event="done.state.Test2" target="Test3"/>
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0006.html
- https://lists.w3.org/Archives/Public/www-voice/2016JanMar/0007.html
E7 (23 December 2016): Appendix G.5 - typo in example SCXML code, "Traffic Report" and "Blackjack"
In the examples of "Traffic Report" and "Blackjack", there are states that incorrectly contain an 'onenter' element instead of an 'onentry' element.
For example:
<onenter>
<script>enterStartOver();</script>
</onenter>
should be:
<onentry>
<script>enterStartOver();</script>
</onentry>
Email trail:
- https://lists.w3.org/Archives/Public/www-voice/2016OctDec/0004.html
- https://lists.w3.org/Archives/Public/www-voice/2016OctDec/0005.html
- https://lists.w3.org/Archives/Public/www-voice/2016OctDec/0006.html
Kazuyuki Ashimura