在多个xml文件上拆分SCXML

时间:2017-08-18 12:25:46

标签: xml qt qt5 scxml qxmlstreamreader

我正在创建不同的SCXML文件,然后由Qt应用程序使用。为了更好地构建我的状态机,我想将一台机器的公共部分与每台其他机器的自定义状态分开。所以我想把我的状态机分成2个文件。

父文件: parentStateMachine.scxml

<?xml version="1.0" encoding="UTF-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml"
       version="1.0"
       binding="early"
       xmlns:qt="http://www.qt.io/2015/02/scxml-ext"
       name="MyStatemachine.scxml"
       qt:editorversion="4.2.2"
       datamodel="ecmascript"
       initial="s1"
       xmlns:xi="http://www.w3.org/2001/XInclude">
    <state id="init">
        <transition type="external" event="prepare" target="configure"/>
    </state>
    <state id="configure">
        <transition type="external" event="start" target="run"/>
    </state>
    <parallel id="run">
        <!-- include here application specific states-->
        <transition type="external" event="stop" target="end"/>
    </parallel>
    <final id="end">
    </final>
</scxml>

特定于应用程序: applicationSpecific1.scxml

<state id="applicationSpecificState1"/>
<state id="applicationSpecificState2"/>
<state id="applicationSpecificState3"/>

我已尝试以两种方式在父级中包含特定应用程序:

  1. 我尝试插入<xi:include href="applicationSpecific1.xml"parse="text"/>而不是评论。

  2. 我尝试在<!DOCTYPE scxml [<!ENTITY innerFile SYSTEM "applicationSpecific1.scxml">]>代码后添加xml,然后添加&innerFile;代替评论。

  3. 当我加载文档时,它们被解析得很好但是根据行为我会推断它没有考虑应用程序特定scxml中定义的内容。

    PS: 我发现这个旧的未解决的错误报告,我希望已经解决了。 https://bugreports.qt.io/browse/QTBUG-1088

0 个答案:

没有答案