<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 10/30/21 17:51, Joseph D Williams
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:617dcc64.1c69fb81.9f29a.2debSMTPIN_ADDED_MISSING@mx.google.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}@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;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}.MsoChpDefault
        {mso-style-type:export-only;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0in;}ul
        {margin-bottom:0in;}</style>
      <div class="WordSection1">
        <p class="MsoNormal">For me, the JSON should be standardized
          when it can be clearly shown to be an accurate set of rules
          when transcoding between the XML, the Classic, and the JSON,
          given the idea that the XML is the defining schema. That is,
          for a given set of data, equivalent results can be produced to
          and from equivalent data in other standard forms. </p>
      </div>
    </blockquote>
    <p>Our tools are not yet adequate to test this.  Roundtripping has
      been done, but we're still investigating XML -> JSON -> XML
      (via X3DJSAIL).  I personally have done roundtripping and some
      investigation.  We will need to focus on a few examples instead of
      the whole archive.</p>
    <p>Here are some changes that I see worthwhile:<br>
    </p>
    <p><span style="font-family:monospace"><span
          style="font-weight:bold;color:#5454ff;background-color:#ffffff;"><a class="moz-txt-link-abbreviated" href="http://www.web3d.org/x3d/stylesheets">www.web3d.org/x3d/stylesheets</a></span><span
          style="color:#000000;background-color:#ffffff;">$ svn diff
          X3dTo*.xslt
        </span><br>
        Index: X3dToJson.xslt
        <br>
===================================================================
        <br>
        --- X3dToJson.xslt      (revision 32565)
        <br>
        +++ X3dToJson.xslt      (working copy)
        <br>
        @@ -359,7 +359,7 @@
        <br>
                                    <xsl:text>&#10;</xsl:text>
        <br>
                                            <xsl:call-template
        name="print-indent"><xsl:with-param name="indent"
        select="$indent+4"/></xsl:call-template>
        <br>
                                            <!-- TODO no guidance yet
        on how to properly mark the governing schema within a JSON file
        at <a class="moz-txt-link-freetext" href="http://json-schema.org">http://json-schema.org</a> -->
        <br>
        -                                    <xsl:text>"JSON
schema":<a class="moz-txt-link-rfc2396E" href="https://www.web3d.org/specifications/x3d-3.3-JSONSchema.json">"https://www.web3d.org/specifications/x3d-3.3-JSONSchema.json"</a></xsl:text><br>
        +                                    <xsl:text>"JSON
schema":<a class="moz-txt-link-rfc2396E" href="https://www.web3d.org/specifications/x3d-4.0-JSONSchema.json">"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.json"</a></xsl:text><br>
                                    <xsl:text>,</xsl:text>
        <br>
                                    </xsl:if>
        <br>
         <br>
        Index: X3dToNodeJS.xslt
        <br>
===================================================================
        <br>
        --- X3dToNodeJS.xslt    (revision 32565)
        <br>
        +++ X3dToNodeJS.xslt    (working copy)
        <br>
        @@ -299,7 +299,8 @@
        <br>
               }
        <br>
        }
        <br>
        </xsl:text><!-- class complete -->
        <br>
        -<xsl:text>new </xsl:text><xsl:value-of
        select="$newClassName"/><xsl:text>().main();</xsl:text>
        <br>
        +<xsl:text>new </xsl:text><xsl:value-of
        select="$newClassName"/><xsl:text>().main();
        <br>
        +process.exit(0);</xsl:text>
        <br>
         <br>
         <br>
            </xsl:template>
        <br>
        @@ -2243,9 +2244,22 @@
        <br>
                                       <xsl:if test="(local-name() =
        'class')">
        <br>
                                       <xsl:text>Css</xsl:text><!--
        method prefix -->
        <br>
                                       </xsl:if>
        <br>
        +                               <xsl:if test="(local-name() =
        'style')">
        <br>
        +
                                      <xsl:text>Css</xsl:text><!--
        method prefix -->
        <br>
        +                               </xsl:if>
        <br>
        +                               <xsl:if test="(local-name() =
        'id')">
        <br>
        +
                                      <xsl:text>Html</xsl:text><!--
        method prefix -->
        <br>
        +                               </xsl:if>
        <br>
                                       <!-- upper camel case -->
        <br>
        -                               <xsl:value-of
select="translate(substring(name(),1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/><br>
        -                               <xsl:value-of
        select="substring(name(),2)"/>
        <br>
        +                               <xsl:if test="(local-name() =
        'id')">
        <br>
        +                                       <xsl:value-of
select="translate(substring(name(),1,2),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/><br>
        +                               </xsl:if>
        <br>
        +
        <br>
        +                               <xsl:if test="(local-name()
        != 'id')">
        <br>
        +                                       <xsl:value-of
select="translate(substring(name(),1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/><br>
        +                                       <xsl:value-of
        select="substring(name(),2)"/>
        <br>
        +                               </xsl:if>
        <br>
        +
        <br>
                               <xsl:text>(</xsl:text>
        <br>
         <br>
                                       <xsl:variable
        name="nodeNumber"    select="count(../preceding::*) + 1"/><br>
      </span></p>
    <p><span style="font-family:monospace"><br>
      </span></p>
    <p><br>
      <span style="font-family:monospace"><span
          style="font-family:monospace"><span
            style="font-weight:bold;color:#5454ff;background-color:#ffffff;"><a class="moz-txt-link-abbreviated" href="http://www.web3d.org/x3d/stylesheets">www.web3d.org/x3d/stylesheets</a></span><span
            style="color:#000000;background-color:#ffffff;">$ svn diff
            CreateX3dSceneAccessInterfaceJava.xslt  </span><br>
          Index: CreateX3dSceneAccessInterfaceJava.xslt
          <br>
===================================================================
          <br>
          --- CreateX3dSceneAccessInterfaceJava.xslt      (revision
          32565)
          <br>
          +++ CreateX3dSceneAccessInterfaceJava.xslt      (working copy)
          <br>
          @@ -35831,7 +35831,21 @@
          <br>
                                                                       childElementName.equals("GeoMetadata")
             || childElementName.equals("ImageCubeMapTexture") ||
          childElementName.equals("ImageTexture3D") ||
          <br>
                                                                       childElementName.equals("ImageTexture")
            || childElementName.equals("Inline")              ||
          childElementName.equals("MovieTexture") ||
          <br>
                                                                       childElementName.equals("PackagedShader")
          || childElementName.equals("Script")              ||
          childElementName.equals("ShaderPart") ||
          <br>
          -
                                                                      childElementName.equals("ShaderProgram"))
                <br>
          +
                                                                      childElementName.equals("ShaderProgram")<br>
          +|| childElementName.equals("Anchor")
          <br>
          +|| childElementName.equals("Inline")
          <br>
          +|| childElementName.equals("DISEntityTypeMapping")
          <br>
          +|| childElementName.equals("GeoMetadata")
          <br>
          +|| childElementName.equals("AudioClip")
          <br>
          +|| childElementName.equals("ImageCubeMapTexture")
          <br>
          +|| childElementName.equals("ImageTexture3D")
          <br>
          +|| childElementName.equals("ImageTexture")
          <br>
          +|| childElementName.equals("MovieTexture")
          <br>
          +|| childElementName.equals("Script")
          <br>
          +|| childElementName.equals("PackagedShader")
          <br>
          +|| childElementName.equals("ShaderPart")
          <br>
          +|| childElementName.equals("ShaderProgram")
          <br>
          +)       <br>
                                                                   &&
          (containerField.equals("children") ||
          containerField.equals("watchList") ||
          containerField.equals("texture") ||
          containerField.equals("programs") ||       <br>
                                                                       containerField.equals("parts")
             || containerField.equals("mapping")   ||
          containerField.equals("shaders") ||
          containerField.equals("source"))) // children is new <br>
          name in X3D4, otherwise still a common, unambiguous error
          <br>
                                                                       ((LoadSensor)elementObject).addChildren((X3DNode)
          childX3dElement); // formerly addWatchList in X3D3<br>
        </span></span></p>
  </body>
</html>