Разделение 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"/>
Я попытался включить приложение, специфичное для родительского, двумя способами:
Я пробовал вставлять
<xi:include href="applicationSpecific1.xml"parse="text"/>
вместо комментария.Я пытался добавить
<!DOCTYPE scxml [<!ENTITY innerFile SYSTEM "applicationSpecific1.scxml">]>
сразу послеxml
тег, а затем добавление&innerFile;
вместо комментария.
Когда я загружаю документы, они анализируются нормально, но из поведения я могу сделать вывод, что он не принимает во внимание то, что определено в специфичном для приложения scxml.
PS: я нашел этот старый неразрешенный отчет об ошибке, который, я надеюсь, уже решен. https://bugreports.qt.io/browse/QTBUG-1088