<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Google is my friend.  Here is how to run it from Java now:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                                        net.sf.saxon.Transform.main(new String[] {</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                                                                "-warnings:recover",</p><p class=MsoNormal>                                                                "-o:"+out,</p><p class=MsoNormal>                                                                "-s:"+args[a],</p><p class=MsoNormal>                                                                "-xsl:X3dToJson.xslt" });</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Found:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><a href="http://www.saxonica.com/documentation9.5/using-xsl/commandline.html">http://www.saxonica.com/documentation9.5/using-xsl/commandline.html</a></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am not sure why they couldn’t make it backwards compatible.  Perhaps on purpose.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Sent: </b>Tuesday, March 21, 2017 2:41 AM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Subject: </b>RE: X3DJSAIL progress report: quoteescapinig,nodevalidation,.jsonimprovements, containerField handling</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Attached is full RunSaxon.java source code.  I’m puzzled, and I think there’s a difference in how you call it.  I will check X3DJSAIL.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Sent: </b>Tuesday, March 21, 2017 2:32 AM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Subject: </b>RE: X3DJSAIL progress report: quote escapinig,nodevalidation,.jsonimprovements, containerField handling<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The saxon9he.jar works on some X3D files.  On others, my code reports:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Command line option -o requires a value<o:p></o:p></p><p class=MsoNormal>FATAL C:/x3d-code/www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/TreeFishPlaque.x3d > www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/TreeFishPlaque.json<o:p></o:p></p><p class=MsoNormal>There is no escape! 2<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Is there some requirement for the output to start with C:/… or something like that?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Sent: </b>Tuesday, March 21, 2017 2:12 AM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Subject: </b>RE: X3DJSAIL progress report: quote escapinig, nodevalidation,.jsonimprovements, containerField handling<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Comments embedded.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Sent: </b>Tuesday, March 21, 2017 1:16 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a>; <a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Subject: </b>Re: X3DJSAIL progress report: quote escapinig, node validation,.jsonimprovements, containerField handling<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 3/20/2017 5:59 PM, yottzumm@gmail.com wrote:<o:p></o:p></p><p class=MsoNormal>> Is there some configuration setting for quoting in the X3dToJson.xslt stylesheet?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>No, it should be explicit with no variations.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If you want to check for parameters and default settings in the future, here is parameter list at top of that stylesheet:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><xsl:stylesheet version="2.0" exclude-result-prefixes="ds saxon"<o:p></o:p></p><p class=MsoNormal>                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"<o:p></o:p></p><p class=MsoNormal>                 xmlns:ds="http://www.w3.org/2000/09/xmldsig#"<o:p></o:p></p><p class=MsoNormal>                 xmlns:saxon="http://icl.com/saxon" saxon:trace="no"><o:p></o:p></p><p class=MsoNormal>     <!--<o:p></o:p></p><p class=MsoNormal>                 xmlns="http://www.w3.org/TR/xhtml1/strict"<o:p></o:p></p><p class=MsoNormal>                 xmlns:fn="http://www.w3.org/2005/xpath-functions" --><o:p></o:p></p><p class=MsoNormal>                 <o:p></o:p></p><p class=MsoNormal>     <xsl:param name="stripComments"><xsl:text>false</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="stripDefaultAttributes"><xsl:text>true</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="indentEnabled"><xsl:text>true</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="sourceText"><xsl:text>strings</xsl:text></xsl:param> <!-- escaped | strings | plaintext --><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="traceEnabled" ><xsl:text>false</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="traceScripts" ><xsl:text>false</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal>                <!-- TODO future feature: whether to apply changes to meta references, url file extensions, etc. --><o:p></o:p></p><p class=MsoNormal>     <xsl:param name="updateContent" ><xsl:text>false</xsl:text></xsl:param><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>   See differences between text.json and text.new.json (Search for string starting with Node.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think that the conversion from XML .x3d to .json has to backslash-escape the contained \ and " characters independently.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>In other words, \ becomes \\ and " becomes \"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:red'>Yes, but what does \" become  \\\" or \"?  What do I do for the Java?  You would think I have an extra \ or something.<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hence for examples<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                http://www.web3d.org/specifications/java/X3DJSAIL.html#Examples<o:p></o:p></p><p class=MsoNormal>                http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.x3d<o:p></o:p></p><p class=MsoNormal>                http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.json<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>you find the following correspondence:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><MetadataString name='escapedQuotesTest1' containerField='value' value='"escaped quotation marks example 1: He said, \"Immel did it!\""'/><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{ "MetadataString":<o:p></o:p></p><p class=MsoNormal>   {<o:p></o:p></p><p class=MsoNormal>                "@name":"escapedQuotesTest1",<o:p></o:p></p><p class=MsoNormal>                "@value":["escaped quotation marks example 1: He said, \\\"Immel did it!\\\""]<o:p></o:p></p><p class=MsoNormal>   }<o:p></o:p></p><p class=MsoNormal>},<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Of course, escaping is especially important in <Text> nodes, where the author might want quote marks in the X3D string that the user sees.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Not sure whatever it was we had before, but it would seem this is the correct answer now.  Hope you will agree.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Good to confirm: can you round-trip the .json back to .x3d XML?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:red'>That’s text.x3d.new.  It’s WAY different.  Looks like<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'><Text containerField="geometry" string="&quot;Node\\\&quot;\\\&quot;\\\&quot;&quot;"><o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>Please check text.java for correctness.  I’m not too sure about all this…  Seems like one X3dToJson.xslt run (text.x3d -> text.json) should be the same as another (text.json.intermediate.x3d -> text.new.json).  I can regen if you think it’s best.  The two X3D files are nearly identical.  Is it possible I am using two different style sheets?  text.json was translated today.<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>I figured it out.  I am using two different versions of the XSLT stylesheet jar.  One must be wrong.  Which is it?  RunSaxon.java (same as x3d resource examples I think) uses saxon9B.jar which is old.  So the original text.json is incorrect?  Please check.  Seems like I’m going to have to upgrade RunSaxon.java to the latest release (which do you recommend?).  How would I translate this Java code to the new form?<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>                                        net.sf.saxon.Transform.main(new String[] {<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>                                                                "-warnings:recover",<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>                                                                "-o",<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>                                                                out,<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>                                                                args[a],<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>                                                                "X3dToJson.xslt" });<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>I think we have a major conflict within one stylesheet vendor, or between stylesheet vendors.  Help!<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>I use:<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>ConfigurationProperties.setXsltEngine(ConfigurationProperties.XSLT_ENGINE_nativeJava);<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>In my Java to generate JSON.  What do you recommend?  I think we need to file a bug report with someone!  Please text all my X3D files for conversion to JSON with various stylesheet jar vendors!<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:red'>John<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>