diff -r 577118ebd179 -r c89fc366bebd svghmi/analyse_widget.ysl2 --- /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"; + } + +}