include yslt_noindent.yml2 // overrides yslt's output function to set CDATA decl output(method, cdata-section-elements="script"); istylesheet /* From Inkscape */ xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns="http://www.w3.org/1999/xhtml" /* Our namespace to invoke python code */ xmlns:ns="beremiz" extension-element-prefixes="ns" exclude-result-prefixes="ns" { /* This retrieves geometry obtained through "inkscape -S" * already parsed by python and presented as a list of * */ variable "geometry", "ns:GetSVGGeometry()"; variable "hmitree", "ns:GetHMITree()"; /* Identity template : * - copy every attributes * - copy every sub-elements */ template "@* | node()" { /* use real xsl:copy instead copy-of alias from yslt.yml2 */ xsl:copy apply "@* | node()"; } variable "mark" > =HMI=\n /* copy root node and add geometry as comment for a test */ template "/" html xmlns="http://www.w3.org/1999/xhtml" { head; body style="margin:0;" { xsl:copy { comment { apply "$geometry", mode="testgeo"; } comment { apply "$hmitree", mode="testtree"; } apply "@* | node()"; } script{ /* TODO : paste hmitree hash stored in hmi tree root node */ || function evaluate_js_from_descriptions() { var Page; var Input; var Display; var res = []; || variable "midmark" > \n«$mark» apply """//*[contains(child::svg:desc, $midmark) or \ starts-with(child::svg:desc, $mark)]""",2 mode="code_from_descs"; || return res; } || /*TODO add : - pages content + with ref to elt ? - widgets parameters */ include text svghmi.js } } } template "*", mode="code_from_descs" { || { var path, role, name, priv; var id = "«@id»"; || /* if label is used, use it as default name */ if "@inkscape:label" |> name = "«@inkscape:label»"; | /* -------------- */ // this breaks indent, but fixing indent could break string literals value "substring-after(svg:desc, $mark)"; // nobody reads generated code anyhow... || /* -------------- */ res.push({ path:path, role:role, name:name, priv:priv }) } || } template "bbox", mode="testgeo"{ | ID: «@Id» x: «@x» y: «@y» w: «@w» h: «@h» } template "*", mode="testtree"{ param "indent", "''"; | «$indent» «local-name()» «@name» «@type» «@path» apply "*", mode="testtree" { with "indent" value "concat($indent,'>')" }; } }