<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>Is there some configuration setting for quoting in the X3dToJson.xslt stylesheet?  See differences between text.json and text.new.json (Search for string starting with Node.</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:brutzman@nps.edu">Don Brutzman</a><br><b>Sent: </b>Sunday, March 19, 2017 5:24 PM<br><b>To: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Cc: </b><a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a>; <a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Subject: </b>Re: X3DJSAIL progress report: quote escapinig, node validation, .jsonimprovements, containerField handling</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Further updates now deployed:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- A  bunch of work for escaping quotes in the X3dToJson.xslt stylesheet</p><p class=MsoNormal>- Improved handling of quotation marks and escaping</p><p class=MsoNormal>- Validating acceptableNodeTypes for setting nodes</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Now handling most (perhaps all?) containerField values OK.  Related documentation now available at</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#containerField</p><p class=MsoNormal>========================================================================</p><p class=MsoNormal>X3D Scene Authoring Hints: containerField</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>  For the XML encoding of .x3d scenes, containerField is the field name indicating a node's field relationship to its parent node.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> For example: <Transform><Shape containerField='children'/></Transform> shows that the Shape node is one of the children of the Transform node.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>     Default containerField values for each node are correct in most cases, so the need to override default containerField values is rare.</p><p class=MsoNormal>>     Example values include containerField='geometry' for Box node, containerField='children' for Group node, containerField='proxy' for hidden proxy shape within a Collision node, etc.</p><p class=MsoNormal>>     containerField attribute is part of XML encoding for X3D scenes, and corresponds to the always-declared field labels in the ClassicVRML and VRML97 file encodings.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> A small number of nodes have more than one field that can accept the same node type. Care must be taken with the following non-default child fields.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>     MetadataSet can have a single X3DMetadataNode node with default containerField='metadata', or multiple other X3DMetadataNode nodes with containerField='value'.</p><p class=MsoNormal>>     CADFace and CollidableShape can have a single default Shape node with containerField='shape'. CADFace can also accept an LOD or Transform node in this SFNode field.</p><p class=MsoNormal>>     Collision can contain multiple nodes with default containerField='children', or can have a single unrendered Shape, or X3DGroupingNode with containerField='proxy'.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>========================================================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Also rebuilt and uploaded all .json scenes in X3D Examples, see "Special testing distribution" at</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                http://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Test excerpts follow, linked at</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                X3DJSAIL Examples</p><p class=MsoNormal>                http://www.web3d.org/specifications/java/X3DJSAIL.html#Examples</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.txt</p><p class=MsoNormal>========================================================================</p><p class=MsoNormal><Shape></p><p class=MsoNormal>                <Appearance></p><p class=MsoNormal>                                <Material/></p><p class=MsoNormal>                </Appearance></p><p class=MsoNormal>                <Text string='"X3D Java" "SAI Library" "X3DJSAIL"'></p><p class=MsoNormal>                                <MetadataSet name='EscapedQuotationMarksMetadataSet'></p><p class=MsoNormal>                                                <MetadataString name='escapedQuotesTest2' value='"escaped quotation marks example 2: He said, \"Immel did it!\""'/></p><p class=MsoNormal>                                </MetadataSet></p><p class=MsoNormal>                                <FontStyle family='"SERIF"' justify='"MIDDLE" "MIDDLE"'/></p><p class=MsoNormal>                                <!-- escaped quotation marks example 3: He said, \"Immel did it!\" --></p><p class=MsoNormal>                                <!-- escaped quotation marks example 4: He said, \&quot;Immel did it!\&quot; --></p><p class=MsoNormal>                </Text></p><p class=MsoNormal></Shape></p><p class=MsoNormal><Collision></p><p class=MsoNormal>                <!-- test containerField='proxy' --></p><p class=MsoNormal>                <Shape DEF='ProxyShape'></p><p class=MsoNormal>                                <Box/></p><p class=MsoNormal>                </Shape></p><p class=MsoNormal></Collision></p><p class=MsoNormal>========================================================================</p><p class=MsoNormal>{ "Shape":</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "-appearance":</p><p class=MsoNormal>                  { "Appearance":</p><p class=MsoNormal>                                {</p><p class=MsoNormal>                                  "-material":</p><p class=MsoNormal>                                                { "Material":</p><p class=MsoNormal>                                                  {</p><p class=MsoNormal>                                                  }</p><p class=MsoNormal>                                                }</p><p class=MsoNormal>                                }</p><p class=MsoNormal>                  },</p><p class=MsoNormal>                "-geometry":</p><p class=MsoNormal>                  { "Text":</p><p class=MsoNormal>                                {</p><p class=MsoNormal>                                  "@string":["X3D Java","SAI Library","X3DJSAIL"],</p><p class=MsoNormal>                                  "-metadata":</p><p class=MsoNormal>                                                { "MetadataSet":</p><p class=MsoNormal>                                                  {</p><p class=MsoNormal>                                                                "@name":"EscapedQuotationMarksMetadataSet",</p><p class=MsoNormal>                                                                "-value":[</p><p class=MsoNormal>                                                                  { "MetadataString":</p><p class=MsoNormal>                                                                                {</p><p class=MsoNormal>                                                                                  "@name":"escapedQuotesTest1",</p><p class=MsoNormal>                                                                                  "@value":["escaped quotation marks example 1: He said, \\\"Immel did it!\\\""]</p><p class=MsoNormal>                                                                                }</p><p class=MsoNormal>                                                                  },</p><p class=MsoNormal>                                                                  { "MetadataString":</p><p class=MsoNormal>                                                                                {</p><p class=MsoNormal>                                                                                  "@name":"escapedQuotesTest2",</p><p class=MsoNormal>                                                                                  "@value":["escaped quotation marks example 2: He said, \\\"Immel did it!\\\""]</p><p class=MsoNormal>                                                                                }</p><p class=MsoNormal>                                                                  }</p><p class=MsoNormal>                                                                ]</p><p class=MsoNormal>                                                  }</p><p class=MsoNormal>                                                },</p><p class=MsoNormal>                                  "-fontStyle":</p><p class=MsoNormal>                                                { "FontStyle":</p><p class=MsoNormal>                                                  {</p><p class=MsoNormal>                                                                "@justify":["MIDDLE","MIDDLE"]</p><p class=MsoNormal>                                                  }</p><p class=MsoNormal>                                                },</p><p class=MsoNormal>                                  "-children":[</p><p class=MsoNormal>                                                {</p><p class=MsoNormal>                                                  "#comment":"escaped quotation marks example 3: He said, \\\"Immel did it!\\\""</p><p class=MsoNormal>                                                },</p><p class=MsoNormal>                                                {</p><p class=MsoNormal>                                                  "#comment":"escaped quotation marks example 4: He said, \\&quot;Immel did it!\\&quot;"</p><p class=MsoNormal>                                                }</p><p class=MsoNormal>                                  ]</p><p class=MsoNormal>                                }</p><p class=MsoNormal>                  }</p><p class=MsoNormal>   }</p><p class=MsoNormal>},</p><p class=MsoNormal>{ "Collision":</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "-children":[</p><p class=MsoNormal>                  {</p><p class=MsoNormal>                                "#comment":"test containerField='proxy'"</p><p class=MsoNormal>                  }</p><p class=MsoNormal>                ],</p><p class=MsoNormal>                "-proxy":</p><p class=MsoNormal>                  { "Shape":</p><p class=MsoNormal>                                {</p><p class=MsoNormal>                                  "@DEF":"ProxyShape",</p><p class=MsoNormal>                                  "-geometry":</p><p class=MsoNormal>                                                { "Box":</p><p class=MsoNormal>                                                  {</p><p class=MsoNormal>                                                  }</p><p class=MsoNormal>                                                }</p><p class=MsoNormal>                                }</p><p class=MsoNormal>                  }</p><p class=MsoNormal>   }</p><p class=MsoNormal>},</p><p class=MsoNormal>========================================================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 3/13/2017 8:38 AM, Don Brutzman wrote:</p><p class=MsoNormal>> A new X3DLoaderObject is now ready that can read .x3d scenes using native Java DOM support, using Java Reflection to then create strongly typed X3DJSAIL scene objects.  Online at</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>     X3DLoaderObject: Concrete class for loading an X3D graphics string, file or fragment encoded in XML.</p><p class=MsoNormal>>     http://www.web3d.org/specifications/java//javadoc/org/web3d/x3d/jsail/X3DLoaderObject.html</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> with methods</p><p class=MsoNormal>>     getDomDocument() isLoadSuccessful() getValidationResult() getX3dObjectTree()</p><p class=MsoNormal>>     loadX3DfromFile(x3dFile) toStringX3D(org.w3c.dom.Node node) toX3dObjectTree(org.w3c.dom.Node node)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Example result</p><p class=MsoNormal>>     https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.Reloaded.x3d</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> which is a reloaded and serialized output that exactly matches input scene</p><p class=MsoNormal>>     https://svn.code.sf.net/p/x3d/code/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.x3d</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> This library improvement fixes a significant bug in field types, which are getting more robust.  Also add a variety of .normalize() utility methods and validation checks on negative SFTime/MFTime values.</p><p class=MsoNormal>>     http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFColorObject.html</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> As ever, demonstration test source available in</p><p class=MsoNormal>>     http://www.web3d.org/specifications/java/examples/HelloWorldProgram.java</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Entire build online via</p><p class=MsoNormal>>     http://www.web3d.org/specifications/java/X3DJSAIL.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Have fun with X3D Java using X3DJSAIL!  8)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>