svghmi/gen_index_xhtml.ysl2
branchsvghmi
changeset 2858 39c8d6079f0f
parent 2857 a5c781b2f8f9
child 2861 84c16ece8e10
--- a/svghmi/gen_index_xhtml.ysl2	Thu Mar 05 10:23:03 2020 +0100
+++ b/svghmi/gen_index_xhtml.ysl2	Thu Mar 05 13:54:29 2020 +0100
@@ -260,9 +260,9 @@
         }
     }
 
-    const "detachable_elements", "func:detachable_elements($hmi_pages)";
-
-
+    // Avoid nested detachables
+    const "_detachable_elements", "func:detachable_elements($hmi_pages)";
+    const "detachable_elements", "$_detachable_elements[not(ancestor::*/@id = $_detachable_elements/@id)]";
 
     //////////////// HMI Tree Index
 
@@ -591,7 +591,11 @@
 
             const "all_page_ids","$page_all_elements[@id = $hmi_elements/@id and @id != $page/@id]/@id";
 
-            const "required_detachables", "func:sumarized_elements($page_all_elements)";
+            // Take closest ancestor in detachable_elements
+            // since nested detachable elements are filtered out
+            const "required_detachables", 
+                """func:sumarized_elements($page_all_elements)/
+                   ancestor-or-self::*[@id = $detachable_elements/@id]""";
 
             |   "«$desc/arg[1]/@value»": {
             |     widget: hmi_widgets["«@id»"],