UNPKG

medic-enketo-xslt

Version:

XSL stylesheets for the Enketo XForm transformation to be run client-side in a web browser

39 lines (36 loc) 1.39 kB
EnketoClientSideTransformer = function() { var transformer = this; this.transform = function(xformUrl, onLoaded) { var processors = { html:{ p:new XSLTProcessor() }, model:{ p:new XSLTProcessor() }, }, _debug_xml = function(name, value) { if(false) console.log('process() :: ' + name + '=' + new XMLSerializer().serializeToString(value)); }, loadProcessor = function(type, xslUrl) { jQuery.get(xslUrl).done(function(doc) { processors[type].p.importStylesheet(doc); processors[type].loaded = true; if(processors.html.loaded && processors.model.loaded) { process(); } }); }, process = function() { jQuery.get(xformUrl).done(function(data) { var doc = data, html = processors.html.p.transformToDocument(doc), model = processors.model.p.transformToDocument(doc); _debug_xml('data', data); _debug_xml('html', html); _debug_xml('model', model); onLoaded({ html:html.documentElement.innerHTML, model:model.documentElement.innerHTML }); }); }; loadProcessor('html', '/base/xsl/openrosa2html5form.xsl'); loadProcessor('model', '/base/xsl/openrosa2xmlmodel.xsl'); }; };