Разделение SCXML на несколько XML-файлов

Я создаю различные файлы 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; вместо комментария.

Когда я загружаю документы, они анализируются нормально, но из поведения я могу сделать вывод, что он не принимает во внимание то, что определено в специфичном для приложения scxml.

PS: я нашел этот старый неразрешенный отчет об ошибке, который, я надеюсь, уже решен. https://bugreports.qt.io/browse/QTBUG-1088

0 ответов

Другие вопросы по тегам