svghmi/analyse_widget.ysl2
changeset 3302 c89fc366bebd
parent 3241 fe945f1f48b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/svghmi/analyse_widget.ysl2	Thu Sep 02 21:36:29 2021 +0200
@@ -0,0 +1,49 @@
+include yslt_noindent.yml2
+
+in xsl decl widget_desc(%name, match="widget[@type='%name']", mode="widget_desc") alias template {
+    type > «@type»
+    content;
+};
+
+decl nothing alias - ;
+decl widget_class(%name) alias - {nothing};
+decl widget_defs(%name) alias - {nothing};
+decl widget_page(%name) alias - {nothing};
+decl gen_index_xhtml alias - {nothing};
+decl emit(*name) alias - {nothing};
+
+istylesheet
+            /* From Inkscape */
+            xmlns:svg="http://www.w3.org/2000/svg"
+            xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+
+            extension-element-prefixes="ns func exsl regexp str dyn"
+            exclude-result-prefixes="ns func exsl regexp str dyn svg inkscape" {
+
+    const "indexed_hmitree", "/.."; // compatibility with parse_labels.ysl2
+    include parse_labels.ysl2
+
+    const "hmi_elements", "//svg:*[starts-with(@inkscape:label, 'HMI:')]";
+
+    include widget_*.ysl2
+
+    template "@* | node()", mode="document" {
+        xsl:copy apply "@* | node()", mode="document";
+    }
+
+    template "widget", mode="document" {
+        xsl:copy {
+            apply "@* | node()", mode="document";
+            defs apply ".", mode="widget_desc";
+        }
+    }
+
+    template "/" {
+        const "widgets"
+            apply "$hmi_elements", mode="parselabel";
+        const "widget_ns", "exsl:node-set($widgets)";
+        widgets 
+            apply "$widget_ns", mode="document";
+    }
+
+}