<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Easy pickings! This email is meant to help determine whether MFStrings should be encoded as JSON arrays or JSON string. This will help when we get to X3D JSON schema (if ever). It will also help guide tool developers as they start putting out JSON encoded X3D.<div><br></div><div>You have a @url property that is an MFString. Like:</div><div><br></div><div><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">   "@url": [<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo.png",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo.jpg",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo-small.gif",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png</a>",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg</a>",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif</a>"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       ]</span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><br></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">And I see: </span><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.html">X3D to JSON Stylesheet Converter (web3d.org)</a></p><table border="1" cellspacing="2" cellpadding="2" width="800" style="font-family:"Times New Roman""><tbody><tr><td>MFString is array of quoted SFString (XML attribute) values</td><td>JSON array of <i>string</i> type<br></td></tr></tbody></table><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><br></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">That looks like a JSON array of strings. All is well and good from my point of view, for the @url and @justify MFString you mentioned. Now to address the @channels MFString ...</span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><br></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">We'll go with the sample I posted: </span><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html">Humanoid Animation X3D Examples Archive, Specifications, Korean Character Motion Annex D 01 Jin (web3d.org)</a></p><p class="MsoNormal"><br></p><p class="MsoNormal">In XML:</p><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><</span><span class="element" style="color:navy;font-family:"Times New Roman";font-size:medium">HAnimMotion</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"> </span><span class="gmail-attribute" style="color:green;font-family:"Times New Roman";font-size:medium">DEF</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">='</span><a title="bookmark link to hanim_motion_animation" href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.html#hanim_motion_animation" class="gmail-idName" style="color:maroon;font-family:"Times New Roman";font-size:medium">hanim_motion_animation</a><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">' </span><span class="gmail-attribute" style="color:green;font-family:"Times New Roman";font-size:medium">channels</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">='</span><span class="gmail-value" style="color:teal;font-family:"Times New Roman";font-size:medium">6 Xposition Yposition Zposition Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation 3 Zrotation Xrotation Yrotation</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">' </span><span style="font-size:9pt;font-family:"Courier New""><br></span></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><br></span></p><p class="MsoNormal"><font color="#000000" face="Times New Roman" size="3">That looks good.</font></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><br></span></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">So I dig into the JSON...</span></p><p class="MsoNormal"><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><br></span></p><p class="MsoNormal"><a href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.json">web3d.org/x3d/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01Jin.json</a></p><p class="MsoNormal"><br></p><p class="MsoNormal">There's no "@channels" property at all. There's not even HAnimMotion in the file at all!</p><p class="MsoNormal"><br></p><p class="MsoNormal">Hmm. What do I see on my local machine" Which may have an out of date JSON with the website, I admit:</p><p class="MsoNormal"><br></p><p class="MsoNormal">c:/x3d-code/<a href="http://www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications">www.web3d.org/x3d/content/examples/HumanoidAnimation/Specifications</a></p><p class="MsoNormal">$ grep channels *Motion* | cut -c1-150</p><p class="MsoNormal">KoreanCharacterMotionAnnexD01Jin.json:          "@channels":"6 Xposition Yposition Zposition Zrotation Xrotation Yrotation 3 Zrotation Xrota</p><p class="MsoNormal">KoreanCharacterMotionAnnexD01Jin.x3d:   <HAnimMotion DEF='hanim_motion_animation' channels='6 Xposition Yposition Zposition Zrotation Xrotation Yro</p><p class="MsoNormal"><br></p><p class="MsoNormal">So I conclude that there's no @channels or HAnimMotion in the JSON on the website. Where did it go? No, I'm not going to capture a record of your every move, Don.</p><p class="MsoNormal"><br></p><p class="MsoNormal">Next we look at another popular discussion, NavigationInfo <a class="gmail_plusreply" id="gmail-plusReplyChip-8">@type MFString</a></p><p class="MsoNormal"><a class="gmail_plusreply"><br></a></p><p class="MsoNormal"><a href="https://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/RedSphereBlueBoxIndex.html">Basic X3D Examples Archive, X3D Specifications, Red Sphere Blue Box (web3d.org)</a></p><p class="MsoNormal"><br></p><p class="MsoNormal">Confirmed MFString, see extra quotes in XML:</p><p class="MsoNormal"><br></p><p class="MsoNormal"><span title="Transform translates, orients and scales child geometry within the local world coordinate system" style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><<span class="element" style="color:navy">Transform</span>></span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"></span></p><div class="gmail-indented" style="margin-left:25px;color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><span title="NavigationInfo describes the viewing model and physical characteristics of the viewer's avatar"><<span class="element" style="color:navy">NavigationInfo</span> <span class="gmail-attribute" style="color:green">headlight</span>='<span class="gmail-value" style="color:teal">false</span>' <span class="gmail-attribute" style="color:green">type</span>='<span class="gmail-value" style="color:teal">"EXAMINE"</span>'/></span><br><span title="DirectionalLight creates parallel light rays to illuminate geometric shapes"><<span class="element" style="color:navy">DirectionalLight</span>/></span><br></div><p class="MsoNormal"><a class="gmail_plusreply"><br></a></p><p class="MsoNormal">Now we look a the JSON:</p><p class="MsoNormal"><br></p><p class="MsoNormal">          "Transform": {</p><p class="MsoNormal">            "-children": [</p><p class="MsoNormal">              {</p><p class="MsoNormal">                "NavigationInfo": {</p><p class="MsoNormal">                  "@headlight": false,</p><p class="MsoNormal">                  "@type": "\"EXAMINE\""</p><p class="MsoNormal">                }</p><p class="MsoNormal">              },</p><p class="MsoNormal"><br></p><p class="MsoNormal">Hmm. an MFString, <a class="gmail_plusreply" id="plusReplyChip-9">@type</a> encoded at a JSON string!</p><p class="MsoNormal"><br></p><p class="MsoNormal">So...is an MFString a JSON array of strings or a JSON string?  Please document things extremely well, thanks! We need to call out exceptions in your documentation.</p><p class="MsoNormal"><br></p><p class="MsoNormal">Indeed, in the documentation I listed, there is:</p><p class="MsoNormal"><br></p><pre style="color:rgb(0,0,0)"> { "<b>NavigationInfo</b>":
{
"@type":["NONE"]
}
},</pre><pre style="color:rgb(0,0,0)"><br></pre><pre style="color:rgb(0,0,0)">So I'm guessing we're concluding that MFStrings are JSON arrays.</pre><pre style="color:rgb(0,0,0)"><br></pre><pre style="color:rgb(0,0,0)">Any input, Vince?</pre><p class="MsoNormal"><br></p><p class="MsoNormal">Thanks!</p><p class="MsoNormal"><br></p><p class="MsoNormal">John</p><p class="MsoNormal"><br></p></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Sep 2, 2023 at 7:06 PM Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="msg3701313801432765593"><div lang="EN-US" style="overflow-wrap: break-word;"><div class="m_3701313801432765593WordSection1"><p class="MsoNormal">John, the authoritative X3dToJson.xslt stylesheet is at<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_3701313801432765593MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/stylesheets/X3dToJson.xslt" target="_blank">https://www.web3d.org/x3d/stylesheets/X3dToJson.xslt</a><u></u><u></u></li><li class="m_3701313801432765593MsoListParagraph" style="margin-left:0in"><a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJson.xslt" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJson.xslt</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Here is an X3D JSON model with several MFString values, three excerpts follow. Please identify a problem with these MFString values in JSON, if there is one.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><ul style="margin-top:0in" type="disc"><li class="m_3701313801432765593MsoListParagraph" style="margin-left:0in"><a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.json" target="_blank">https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.json</a><u></u><u></u></li></ul><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">   "WorldInfo": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       "@info": [<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "Example scene to illustrate a simple X3D model"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       ],<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       "@title": "Hello World!"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">   }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">   "ImageTexture": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       "@DEF": "ImageCloudlessEarth",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       "@url": [<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo.png",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo.jpg",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "earth-topo-small.gif",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png</a>",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg</a>",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "<a href="https://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif" target="_blank">https://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif</a>"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">       ]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">   }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">    "Shape": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           "-geometry": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">               "Text": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                   "@DEF": "TextMessage",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                   "@string": [<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                       "Hello",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                       "world!"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                   ],<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                   "-fontStyle": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                       "FontStyle": {<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                           "@justify": [<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                               "MIDDLE",<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                               "MIDDLE"<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                           ]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                       }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">                   }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">               }<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">           },<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">all the best, Don<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">-- <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">Don Brutzman Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:9pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank">https://faculty.nps.edu/brutzman</a><u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p><div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in"><p class="MsoNormal"><b>From:</b> x3d-public <<a href="mailto:x3d-public-bounces@web3d.org" target="_blank">x3d-public-bounces@web3d.org</a>> <b>On Behalf Of </b>John Carlson<br><b>Sent:</b> Saturday, September 2, 2023 2:04 PM<br><b>To:</b> X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br><b>Subject:</b> Re: [x3d-public] @channels in HAnimMotion JSON. MFString again<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><div><div><div><div><p class="MsoNormal">To clarify:<u></u><u></u></p><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I'm not writing server side code to convert my XML to JSON.  Holger already offers conversions on the web. I don't want to support a huge web server infrastructure.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">If someone really wants MFStrings as JSON strings, please by all means, take a copy of X3dToJson.xslt and modify it to your hearts delight! I can provide Java-based infrastructure, here: <a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/java/net/coderextreme/RunSaxon.java" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/java/net/coderextreme/RunSaxon.java</a><u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">This is well tested, but perhaps poorly documented.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Here are some examples running it in a pipeline. The "$@" means a list of X3D XML files. I am running the conversions on multiple processors with the -P ${PROCESSORS}. So something like xargs -P 8, for example , would run on 8 cores. If you want to distribute, I recommend GNU parallel, but I haven't used it.<u></u><u></u></p></div><div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">$ javac -cp "${CLASSPATH}" net/coderextreme/RunSaxon.java<u></u><u></u></p></div><div><div><p class="MsoNormal">$ ls -d "$@" | grep -v intermediate | grep -v "\.new" | tr '\n' '\0'| xargs -0 -P "$PROCESSORS" java net.coderextreme.RunSaxon --- "${OVERWRITE}" --"${STYLESHEETDIR}/X3dToJson.xslt" -json<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">$ ls -d "$@" | xargs -P $PROCESSORS java net.coderextreme.RunSaxon ---overwrite ---silent --../lib/stylesheets/X3dToNodeJS.xslt -js ---../node/net/x3djsonld/data/<u></u><u></u></p></div><div><p class="MsoNormal">$ ls -d "$@" | xargs -P $PROCESSORS java net.coderextreme.RunSaxon ---overwrite ---silent --../lib/stylesheets/X3dToJava.xslt -java ---../java/net/x3djsonld/data/<u></u><u></u></p></div><div><p class="MsoNormal">$ ls -d "$@" | xargs -P $PROCESSORS java net.coderextreme.RunSaxon ---overwrite ---silent --../lib/stylesheets/X3dToPython.xslt -py ---../python/net/x3djsonld/data/<u></u><u></u></p></div></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I will probably add the X3dToES5.xslt in the near future as I'm working with GraalVM.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Enjoy!<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div></div></div></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Sep 2, 2023 at 2:37 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><p class="MsoNormal">So no one wants have a frank conversation about this?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">We need to figure out a solution to MFString in JSON. We can’t do onesies twosies.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">My web page now uses Holger’s Browser.toJSONString(). No other solution works half decently on the web for converting XML to JSON in a browser. X_ITE creates JSON arrays for MFStrings.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I have brought up this issue many, many times. Our current Saxon/XSLT solution does not work in a web client. The Saxon JavaScript version just isn’t there. I am not going to write server side code.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I am converting XML to JSON over from stylesheets to x3d-tidy, even though Saxon itself works perfectly well in X3D-Edit and in my RunSaxon.java. Ideally, we could match a web solution with a server-side solution.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">At this point, I am following Holger’s lead because there’s no Saxon solution for web clients.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Are we killing X3D JSON? Then let’s be upfront about it and not talk in smoke-filled rooms.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Sat, Sep 2, 2023 at 2:58 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<u></u><u></u></p></div><blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">The @channels field value in the translated JSON appears as a JSON string, not as a JSON array. Here we have the MFString problem again.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">It appears that we have different ideas of what "MF" means. To me, MF means a JSON array in JSON. Holger's x3d-tidy tool and X_ITE renders MFStrings as arrays. I created a special case NavigatorInfo@type. Can we convert all MFStrings to JSON strings on output, please? I think that would make everyone happy?<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">If our tools don't agree, that will confuse people.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">There's could be issues around MFStrings in Text/fontStyle still. and other places, like urls...do you want those rendered as strings or arrays.<u></u><u></u></p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">I'm going to proceed with modifying my schema generator, I'll keep a backup of current stuff.<u></u><u></u></p></div></div><div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">John<u></u><u></u></p></div></div></blockquote></div></div></blockquote></div></div></div></div></blockquote></div></div></div></div></div></div></div></div></div></div></div></div></div>