<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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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>I finally tracked this down:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I also question the Object Model, where under:</p><p class=MsoNormal><ConcreteNode name="CADFace"></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It lists:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><containerField name="children"/></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>children should be shape?  Or is the JSON/stylesheet wrong?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I will check the xml schema next.  It also has children as the container Field.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Something here needs to be resolved.   This could be quite a big thing with validating various XML files, since the schema could be wrong.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If the Object Model and Schema are correct, could you please fix the X3D resources JSON and X3D examples?  The X3D example says it’s supposed to validate and work, so…   Changing to shape may be more restrictive, yet check for validation better.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>At a minimum, the Java Code, Object Model and Schema should list an alternate containerField, I think, if the JSON and XML are passing validation.  Probably the containerField isn’t being validated?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</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>Wednesday, February 22, 2017 3:43 PM<br><b>To: </b><a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Cc: </b><a href="mailto:brutzman@nps.edu">'Don Brutzman'</a>; <a href="mailto:x3d-public@web3d.org">'X3D Graphics public mailing list'</a><br><b>Subject: </b>RE: How should CAD -shape containerField be expressed in X3DJSAIL</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sadly, I do not have the JSON available which does not have the -shape field which was produced from X3DJSAIL.  You will probably have to run the code to see it.  I will work on getting this code compiling again, with the new serializer.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>However, I believe the JSON generated is something like this:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"CADFace"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@name"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>"outerSurface"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    “-children”: [</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>       "Shape"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>: {...}<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    ]</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You’ll have to run the code I provided to be sure.  I may get back to this as some point, since I don’t think it’s fixed, but I don’t think you can just brush this off.  Don?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Specifically, I am looking for Java code which will produce -shape from toFileJSON() with X3DJSAIL.  The X3dToJSON.xslt should have full access to the X3DSchema and should be able to produce a -shape field, but I think that X3DJSAIL should do it.  I will investigate further.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Specifically, I question the code in CADFaceObject.java:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        /** containerField describes typical field relationship of a node to its parent.<o:p></o:p></p><p class=MsoNormal>         * Usage is not ordinarily needed when using this API, default value is provided for informational purposes. */<o:p></o:p></p><p class=MsoNormal>        String containerField_DEFAULT_VALUE = "<span style='color:red'>children</span>";<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>        /** containerField describes typical field relationship of a node to its parent.<o:p></o:p></p><p class=MsoNormal>         * Usage is not ordinarily needed when using this API, alternative values are provided for informational purposes. */<o:p></o:p></p><p class=MsoNormal>        String[] containerField_ALTERNATE_VALUES = { "<span style='color:red'>children</span>" };<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>When after the imports, it says:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>* <i>X3D node tooltip</i>:  (X3D version 3.1 or later) CADFace holds geometry representing one face in a Computer-Aided Design (CAD) CADPart. CADFace can only contain a single Shape or LOD node (with containerField=<span style='color:red'>'shape'</span>).<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:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Sent: </b>Wednesday, February 22, 2017 6:36 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Cc: </b><a href="mailto:brutzman@nps.edu">'Don Brutzman'</a>; <a href="mailto:x3d-public@web3d.org">'X3D Graphics public mailing list'</a><br><b>Subject: </b>RE: How should CAD -shape containerField be expressed in X3DJSAIL<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-GB>John,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>When going from JSON to XML you have all the information to generate a “containerField” attribute for the XML encoding. No magical figuring out is required.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>When you parse a node in a JSON encoded file you will see that a node, e.g. “CADFace” as per the example we detailed earlier, lists the “-shape” field, with the “Shape” node being a child object of that field. So, when you convert to the XML encoding, you translate the “CADFace” node. Then, noting that the “Shape” node is contained in a “shape” field, as you translate the “Shape” node you add an attribute “containerField=’shape’” to the “Shape” element in the XML, with the “Shape” element being a child of the “CADFace” element. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>So, in summary, the “containerField” attribute tells a node which field of its parent node it is to be assigned to. Here is a shortened summary. First the JSON encoding:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"CADFace"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@name"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>"outerSurface"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-shape"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>      </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"Shape"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>: {...}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>      </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>When converted to XML it becomes:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'><</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> name</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>outerSurface</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> containerField</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    ...<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  </</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Expressing this another way – I have a C++ application that can read both JSON and XML encoded files.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>When it reads the JSON file it starts to read the “CADFace” object, so creates an instance of “CADFace”. It reads the “@name” property, and so sets the “name” field in the instance to “outerSurface”. It then reads the “-shape” property, and, remembering that this is the “shape” field, reads the “Shape” object, creating an instance of “Shape”. It then sets a reference to that “Shape” instance as the value of the “shape” field in the “CADFace” instance. Then it would go on to read the rest of the “CADFace” object, if there was more, before setting the reference to the instance of “CADFace” to the value of the appropriate field in the appropriate parent instance.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>When reading the XML encoded file my application reads the “CADFace” element, and creates an instance of “CADFace”. It then goes on to read any children of “CADFace”, and finds the “Shape” element. It reads and creates an instance of “Shape”. It then needs to know which field of the “CADFace” instance to set the reference to the “Shape” instance. So, it checks the “containerField” attribute for the “Shape” element. Finding this to be “shape” it sets the value of the “shape” field in the “CADFace” instance to the reference to the “Shape” instance.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Now, what would have happened if the “Shape” element did not have the “containerField” attribute specified in the XML encoding. My application could have two fall backs. The first is the DTD and/or the XML schema. My application can read either of these, and hence find the default value of “containerField”. In the case of “Shape”, that is “children”. The second is to hard wire the default into the code, something I have not yet done. Since “CADFace” does not have a “children” field, the read would fail.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>All the best,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Roy<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> yottzumm@gmail.com [mailto:yottzumm@gmail.com] <br><b>Sent:</b> 21 February 2017 23:00<br><b>To:</b> Roy Walmsley <roy.walmsley@ntlworld.com><br><b>Cc:</b> 'Don Brutzman' <brutzman@nps.edu>; 'X3D Graphics public mailing list' <x3d-public@web3d.org><br><b>Subject:</b> RE: How should CAD -shape containerField be expressed in X3DJSAIL<o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal>I would just like to see some consistency between output from the X3dToJson.xslt and X3DJSAIL.  If this means modifying my Java code, tell me how to do it.  I think the XML generated by X3DJSAIL is WRONG!  It’s kind of hard to capture because it’s an intermediate file.  Perhaps someone could generate XML from X3DJSAIL and compare it to the original.  It takes all my spare time to do the JSON.  That is, change toFileJSON to some XML generating method in the Java and run it.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Since I am producing XML from JSON, I may actually need the containerField in the JSON (unless I can magically figure it out).  Consider this for the V4.0 standard.  Otherwise, I may not be able to produce proper XML.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<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:roy.walmsley@ntlworld.com">Roy Walmsley</a><br><b>Sent: </b>Tuesday, February 21, 2017 8:22 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a><br><b>Cc: </b><a href="mailto:brutzman@nps.edu">'Don Brutzman'</a>; <a href="mailto:x3d-public@web3d.org">'X3D Graphics public mailing list'</a><br><b>Subject: </b>RE: How should CAD -shape containerField be expressed in X3DJSAIL<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-GB>John,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>JSON, just like the VRML encoding, does not need containerField. This is because the child content is listed below the specific field that contains it. So, for example, consider a CADFace listing from the JSON file you attached:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"CADFace"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@name"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>"outerSurface"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-shape"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>      </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"Shape"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>        </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>          </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-children"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:[</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"#comment"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>"note solid='true' and so one-sided external rendering only"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>          </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>],</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>          </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-geometry"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"Cylinder"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>              </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@bottom"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:teal;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@height"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:teal;background:white;mso-highlight:white'>3</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@radius"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:teal;background:white;mso-highlight:white'>2</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@top"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:teal;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>              </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>},</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>          </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-appearance"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"Appearance"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>              </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"@DEF"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>"AppearanceGrey"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>,</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"-material"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'> </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>"Material"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>:</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>{</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                    </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>                  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>              </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>            </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>        </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>      </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>  </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>}</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>The CADFace node has the value of two fields specified. The first is the “name” field, with the value “outerSurface”. The second is the “shape” field, with the value being the “Shape” node.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>How does this appear in the XML encoding? It is :<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'><</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> name</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>outerSurface</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> containerField</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><!--</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:gray;background:white;mso-highlight:white'>note solid='true' and so one-sided external rendering only</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>--><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Cylinder</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> containerField</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>geometry</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> bottom</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> height</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>3</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> radius</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>2</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> top</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Cylinder</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Appearance</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> containerField</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>appearance</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> DEF</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>AppearanceGrey</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>      <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Material</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> containerField</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>material</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Material</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    </</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Appearance</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  </</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>So could have been written as follows:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'><</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> name</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>outerSurface</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>><!--</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:gray;background:white;mso-highlight:white'>note solid='true' and so one-sided external rendering only</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>--><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Cylinder </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'>bottom</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> height</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>3</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> radius</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>2</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'> top</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>false</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Cylinder</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Appearance </span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:red;background:white;mso-highlight:white'>DEF</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>="</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'>AppearanceGrey</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>"><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>      <</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Material</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Material</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>    </</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Appearance</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>  </</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>Shape</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'></</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:maroon;background:white;mso-highlight:white'>CADFace</span><span lang=EN-GB style='font-size:10.0pt;font-family:Consolas;color:blue;background:white;mso-highlight:white'>></span><span lang=EN-GB> <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Notice that the “containerField” attributes have all been deleted. This might well fail to load. Why? Because, reference to the XML schema shows that the default value of “containerField” for the “Shape” node is “children”. However, CADFace does not have a “children” field. So, it is necessary to specify somehow which field the “Shape” node should be assigned to. Hence the “containerField” attribute.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>In summary, in the X3D standard 19775-1 there is no “containerField”. In the ClassicVRML encoding 19776-2 there is no “containerField”. In the JSON encoding 19776-5 there is no “containerField”. It is, however, in the XML encoding 19776-1. This is the only text encoding that it appears in. Note that it would not be expected to be included in an implementation.  That is because, on loading into memory, and having created an instance of the “CADFace” node, the reading of the “Shape” node would create that instance, and then store the reference to it in the “shape” field of the “CADFace” node. So it is only required by the XML loader to determine which node field to add the child node reference to.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>All the best,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB>Roy<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><div><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> [<a href="mailto:yottzumm@gmail.com">mailto:yottzumm@gmail.com</a>] <br><b>Sent:</b> 21 February 2017 06:38<br><b>To:</b> Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>>; Roy Walmsley <<a href="mailto:roy.walmsley@ntlworld.com">roy.walmsley@ntlworld.com</a>>; X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>><br><b>Subject:</b> How should CAD -shape containerField be expressed in X3DJSAIL<o:p></o:p></p></div></div><p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p><p class=MsoNormal>Attached input JSON and converted Java.  The Java does not produce -shape in the output JSON.json file [ not provided—compile and run the Java ].  Is this OK?  I am currently using setShape in the Java.  Why doesn’t the JSON.json have the containerField?  Thanks!<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><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>