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">