diff --git a/.github/workflows/check_examples.yml b/.github/workflows/check_examples.yml new file mode 100644 index 00000000..647835bb --- /dev/null +++ b/.github/workflows/check_examples.yml @@ -0,0 +1,42 @@ +name: Validate SCXML File + +on: + - push + +jobs: + find-files: + runs-on: ubuntu-latest + outputs: + files: ${{ steps.set-files.outputs.files }} + steps: + - uses: actions/checkout@v3 + - name: Find SCXML files + id: set-files + run: | + FILES=$(find examples/UC1-vacuum-cleaner/high-level-models -type f \( -name "*.ascxml" -o -name "*.scxml" -o -name "*.xml" \) | jq -R . | jq -s .) + FILES=$(echo "$FILES" | tr -d '\n') # Ensure single-line JSON + echo "Files found: $FILES" + echo "files=$FILES" >> $GITHUB_OUTPUT + validate-xml: + strategy: + matrix: + path: + - ${{ fromJson(needs.find-files.outputs.files) }} + fail-fast: false + needs: find-files + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Install xmllint + run: sudo apt-get install -y libxml2-utils + - name: Validate SCXML file + run: | + SCHEMA_PATH=$(xmllint --xpath 'string(//@*[local-name()="noNamespaceSchemaLocation"])' "${{ matrix.path }}") + if [ -z "$SCHEMA_PATH" ]; then + echo "No schema found for file: ${{ matrix.path }}. Skipping validation." + exit 0 + fi + SCHEMA_DIR=$(dirname "${{ matrix.path }}") + SCHEMA_PATH="$SCHEMA_DIR/$SCHEMA_PATH" + echo "Using schema: $SCHEMA_PATH" + xmllint --noout --schema "$SCHEMA_PATH" "${{ matrix.path }}"; diff --git a/data-format-specifications/RoAML/main.xsd b/data-format-specifications/RoAML-XML/main.xsd similarity index 94% rename from data-format-specifications/RoAML/main.xsd rename to data-format-specifications/RoAML-XML/main.xsd index 3a3fe487..5571cd6f 100644 --- a/data-format-specifications/RoAML/main.xsd +++ b/data-format-specifications/RoAML-XML/main.xsd @@ -1,7 +1,7 @@ - + @@ -72,4 +72,5 @@ - \ No newline at end of file + + diff --git a/data-format-specifications/RoAML-XML/todo.md b/data-format-specifications/RoAML-XML/todo.md new file mode 100644 index 00000000..a5ce8064 --- /dev/null +++ b/data-format-specifications/RoAML-XML/todo.md @@ -0,0 +1,6 @@ +- [x] Change tag convince_mc_tc into roaml or something like it +- [ ] Check the issue of xmlns +- [x] Change the extension of high level files from scxml to ascxml +- [ ] Check xsd for BT: standard reference? +- [ ] Only one xsd for components and skills? Also plugins? +- [ ] What are the ROSprotocols in the examples? diff --git a/data-format-specifications/RoAML/todo.txt b/data-format-specifications/RoAML/todo.txt deleted file mode 100644 index c88af553..00000000 --- a/data-format-specifications/RoAML/todo.txt +++ /dev/null @@ -1,6 +0,0 @@ -Change tag convince_mc_tc into roaml or something like it -Check the issue of xmlns -Change the extension of high level files from scxml to xml -Check xsd for BT: standard reference? -Only one xsd for components and skills? Also plugins? -What are the ROSprotocols in the examples? diff --git a/data-format-specifications/RoAML/bt_plugin.xsd b/data-format-specifications/bt-plugin-ASCXML/bt_plugin.xsd similarity index 97% rename from data-format-specifications/RoAML/bt_plugin.xsd rename to data-format-specifications/bt-plugin-ASCXML/bt_plugin.xsd index fd9d1724..f502a618 100644 --- a/data-format-specifications/RoAML/bt_plugin.xsd +++ b/data-format-specifications/bt-plugin-ASCXML/bt_plugin.xsd @@ -1,7 +1,7 @@ - + diff --git a/data-format-specifications/main-XML/specifications.xsd b/data-format-specifications/main-XML/specifications.xsd deleted file mode 100644 index 4e453839..00000000 --- a/data-format-specifications/main-XML/specifications.xsd +++ /dev/null @@ -1,136 +0,0 @@ - - - - CONVINCE Specification XML format specification. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data-format-specifications/RoAML/properties.xsd b/data-format-specifications/property-specification-XML/properties.xsd similarity index 100% rename from data-format-specifications/RoAML/properties.xsd rename to data-format-specifications/property-specification-XML/properties.xsd diff --git a/data-format-specifications/property-specification-XML/property.xsd b/data-format-specifications/property-specification-XML/property.xsd deleted file mode 100644 index fc4cd514..00000000 --- a/data-format-specifications/property-specification-XML/property.xsd +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - CONVINCE Property Specification Language XML format specification. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data-format-specifications/RoAML/component.xsd b/data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd similarity index 97% rename from data-format-specifications/RoAML/component.xsd rename to data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd index fd9d1724..f502a618 100644 --- a/data-format-specifications/RoAML/component.xsd +++ b/data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd @@ -1,7 +1,7 @@ - + diff --git a/data-format-specifications/RoAML/skill.xsd b/data-format-specifications/skill-components-(A)SCXML/ascxml_skill.xsd similarity index 97% rename from data-format-specifications/RoAML/skill.xsd rename to data-format-specifications/skill-components-(A)SCXML/ascxml_skill.xsd index fd9d1724..f502a618 100644 --- a/data-format-specifications/RoAML/skill.xsd +++ b/data-format-specifications/skill-components-(A)SCXML/ascxml_skill.xsd @@ -1,7 +1,7 @@ - + diff --git a/data-format-specifications/skill-functions-SCXML/README.md b/data-format-specifications/skill-components-(A)SCXML/scxml_limitations.md similarity index 100% rename from data-format-specifications/skill-functions-SCXML/README.md rename to data-format-specifications/skill-components-(A)SCXML/scxml_limitations.md diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_back_up.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_back_up.scxml index b34b964c..e7614f93 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_back_up.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_back_up.scxml @@ -3,7 +3,8 @@ initial="initial" name="BackUp" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_bump_detected.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_bump_detected.scxml index 495b2495..65904fd1 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_bump_detected.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_bump_detected.scxml @@ -3,7 +3,8 @@ initial="initial" name="IsBumpDetected" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_charging.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_charging.scxml index b5885d0d..eff111a1 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_charging.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_is_charging.scxml @@ -3,7 +3,8 @@ initial="initial" name="IsCharging" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver.scxml index 9855312e..5a5efe99 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver.scxml @@ -3,7 +3,8 @@ initial="initial" name="PerformDockingManeuver" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver_bug.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver_bug.scxml index cf4515dd..96dae03d 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver_bug.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_perform_docking_maneuver_bug.scxml @@ -3,7 +3,8 @@ initial="initial" name="PerformDockingManeuver" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_reset_bumper_state.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_reset_bumper_state.scxml index 07e26636..2f498d0f 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_reset_bumper_state.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_reset_bumper_state.scxml @@ -3,7 +3,8 @@ initial="initial" name="ResetBumperState" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_simple_wait.scxml b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_simple_wait.scxml index 80cc6f35..e36a8de8 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_simple_wait.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/bt_plugins/bt_simple_wait.scxml @@ -3,7 +3,8 @@ initial="initial" name="SimpleWait" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd"> diff --git a/examples/UC1-vacuum-cleaner/high-level-models/main.xml b/examples/UC1-vacuum-cleaner/high-level-models/main.xml index f0973075..b5965ba5 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/main.xml +++ b/examples/UC1-vacuum-cleaner/high-level-models/main.xml @@ -1,9 +1,13 @@ - - + + + + - + diff --git a/examples/UC1-vacuum-cleaner/high-level-models/nodes/robot_model.scxml b/examples/UC1-vacuum-cleaner/high-level-models/nodes/robot_model.scxml index b1048f71..65af9fab 100644 --- a/examples/UC1-vacuum-cleaner/high-level-models/nodes/robot_model.scxml +++ b/examples/UC1-vacuum-cleaner/high-level-models/nodes/robot_model.scxml @@ -3,7 +3,8 @@ initial="running" name="RobotModel" model_src="" - xmlns="http://www.w3.org/2005/07/scxml"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="../../../../data-format-specifications/skill-components-(A)SCXML/ascxml_component.xsd">