Emscripten comes with its own SDK, which bundles the specific versions of
node that it needs.
Install the Emscripten SDK and follow the instructions for setting it up.
./emsdk_env.sh to set the PATH variable (you need to do this each time you want to use Emscripten).
xml.js is an Emscripten port of libxml2’s
xmllint command, making it usable in a web browser.
Clone xml.js (and set up the submodules, if not done automatically).
npm install to install
gulp clean gulp libxml2 # compile libxml2 gulp compile # compile xmllint.js
Start a web server in the xml.js directory and open
test/test.html to test it.
Importing multiple schema files
I’ve made a fork of xml.js which a) allows all the command-line arguments to be specified, so can be used for validating against a DTD rather than an XML schema, and b) allows a list of files to be specified, which are imported into the pseudo-filespace so that
xmllint can access them. This makes running
xmllint in the browser much more like running
xmllint on the command line.
There is one caveat, which is that this version of
xmllint still seems to try to fetch the DTD from the URL in the XML’s doctype declaration rather than that specified with the
--dtdvalid argument, so the doctype needs to be edited to match the local file path to the DTD.