<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This mail wasn’t sent because it was too large, but it had some important notes in it I’d like to bring up in addition to a new repository for source code.<div class=""><br class=""></div><div class=""><br class=""><font color="#942192" class="">The Canonicalizer should:<br class=""><br class="">1.  Canonicalize numbers or fail on bad numbers.  Alternatively, suggest a canonical format for the X3DJSON Loader to write out.<br class=""><br class="">2.  Take out default values or put them in where not specified</font></div><div class=""><font color="#942192" class=""><br class="">3.  Put in container fields if not present, or take them out if not needed (defaults).<br class=""><br class="">The stylesheet should not:<br class=""><br class="">1.  Faithfully respect the XML source with respect to default values.<br class=""><br class="">The X3D JSON loader should:<br class=""><br class="">1.  Populate the containerField attribute in XML.</font></div><div class=""><font color="#942192" class=""><br class=""></font></div><div class="">Since a straight diff was not practical due to numbers, and I didn’t want to program xmlunit to handle number arrays (has someone already?),  I wrote my own xmldiff.js to handle xml comparisons.  xmldiff.js uses xml2js, which I believe the license is here: <a href="https://github.com/Leonidas-from-XIV/node-xml2js/blob/master/LICENSE" class="">https://github.com/Leonidas-from-XIV/node-xml2js/blob/master/LICENSE</a> but it’s not distributed with it, so you may want to download the full package, which requires lodash (MIT), sax (ISC, W3C) and xmlbuilder (MIT).  The file json2x3d.js requires xmldom (MIT or LPGL).  If you have another way of generating XML from JSON, you can program that instead of using json2x3d.js The additional packages are installed during installation (npm install), so you may download the repository without being polluted by source code, just if you install, you get the dependencies.</div><div class=""><br class=""></div><div class="">The repository is found here:</div><div class=""><br class=""></div><div class=""><a href="https://github.com/coderextreme/x3droundtrip" class="">https://github.com/coderextreme/x3droundtrip</a> [ Licensed under <span style="font-family: Menlo; font-size: 11px;" class="">Open-Source Software License for Web3D Consortium ]</span></div><div class=""><span style="font-family: Menlo; font-size: 11px;" class=""><br class=""></span></div><div class=""><font face="Menlo" class=""><span style="font-size: 11px;" class="">The repository includes source code I’ve written for the X3D JSON Loader, but is a separate distribution, without the licenses for content.  This is a stripped down version, targeted at generating XML from the loader, but the code should be identical.</span></font></div><div class=""><br class=""></div><div class="">It also requires Linux/MacOS shell utilities and node.js.  I will work on getting rid of the dependency on Linux/MacOSX (but likely there are alternatives…)</div><div class=""><br class=""></div><div class="">Note that this package will write and perhaps overwrite XML (.x3d) files in /<a href="http://www.web3d.org" class="">www.web3d.org</a> or wherever your JSON files are found if you change the $EXAMPLES in toxml.sh.  It also requires original .x3d files alongside the JSON files to run through the canonicalizer.   The generated files will include "-roundtrip” (json2x3d.js does this) and “Canonical”  (the Canonicalizer does this) If you have files like that, you may want to make copy your JSON and X3D files elsewhere.  I will work on configuration of these items.  If desired, I can copy the files elsewhere.</div><div class=""><br class=""></div><div class="">It would probably be simpler to change xmlunit to handle number arrays.</div><div class=""><br class=""></div><div class="">John</div><div class=""><div><div class=""><div class=""><br class=""></div></div></div><br class=""></div></body></html>