<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>I think there's still a error in X3dToJson.xslt, conversion from
      XML to JSON produces</p>
    <p>[snippet]</p>
    <p>{ "HAnimHumanoid":<br>
                  {    <br>
                    "@name":"JinLOA4",<br>
                    "@DEF":"hanim_JinLOA4",<br>
                    "@loa":4,                 <br>
                    "@scale":[0.0225,0.0225,0.0225],<br>
                    "@version":"2.0",<br>
      <u><b>              "-value":[    </b></u>     <br>
                      { "MetadataSet":<br>
                        {              "-value":[    <br>
    </p>
    <p><br>
    </p>
    <p>I believe this affects all my downstream serialzers.</p>
    <p>I will double check that I am using the stylesheet.</p>
    <p>John<br>
    </p>
    <div class="moz-cite-prefix">On 12/23/21 13:50, Brutzman, Donald
      (Don) (CIV) wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:BY3PR13MB48843FB268CC46BEC41D623BC47E9@BY3PR13MB4884.namprd13.prod.outlook.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;}span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0in;}ul
        {margin-bottom:0in;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Hi John, thanks for this elaboration of the
          question.  Here is an in-depth explanation giving multiple
          related references that answer the question: yes, the
          /metadata/ field is part of HAnimHumanoid node.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">More precise URL for HAnimHumanoid in HAnim
          v2.0 specification is<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <ul style="margin-top:0in" type="disc">
          <li class="MsoListParagraph"
            style="margin-left:0in;mso-list:l0 level1 lfo1">Part 1: 
            Humanoid animation (HAnim) architecture, Clause 6 Object
            Interfaces, 6.2 Humanoid<o:p></o:p></li>
          <li class="MsoListParagraph"
            style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/Obje">https://www.web3d.org/documents/specifications/19774-1/V2.0/Architecture/Obje</a>
            Part 1:  Humanoid animation (HAnim)
            architecturectInterfaces.html#Humanoid<o:p></o:p></li>
        </ul>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">HAnim architecture specification is
          abstract and must be implemented by other specifications. 
          Thus you have to look in X3D Architecture specification for
          corresponding X3D details.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Corresponding X3D Architecture
          specification is<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <ul style="margin-top:0in" type="disc">
          <li class="MsoListParagraph"
            style="margin-left:0in;mso-list:l0 level1 lfo1">X3D4 Part 1:
            Architecture and base components, 26 Humanoid Animation
            (HAnim) component, clause 26.3.2 HAnimHumanoid<o:p></o:p></li>
          <li class="MsoListParagraph"
            style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid</a><o:p></o:p></li>
        </ul>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">HAnimHumanoid : X3DChildNode,
            X3DBoundedObject {<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFVec3f    [in,out]
            center                0 0 0    (-∞,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFString   [in,out]
            description           ""<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFBool     [in,out]
            bboxDisplay           FALSE<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFBool     [in,out]
            visible               TRUE<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFString   [in,out]
            info                  []<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFVec3f    [in,out]
            jointBindingPositions []       (-∞,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFRotation [in,out]
            jointBindingRotations []       (-∞,∞)|[-1,1]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFVec3f    [in,out]
            jointBindingScales    []       (0,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            joints                []       [HAnimJoint]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFInt32    [in,out]
            loa                   -1       [-1,4]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFNode     [in,out]
            metadata              NULL     [X3DMetadataObject]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            motions               []       [HAnimMotion]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFBool     [in,out]
            motionsEnabled        []<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFString   [in,out]
            name                  ""<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFRotation [in,out]
            rotation              0 0 1 0  (-∞,∞)|[-1,1]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFVec3f    [in,out]
            scale                 1 1 1    (0,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFRotation [in,out]
            scaleOrientation      0 0 1 0  (-∞,∞)|[-1,1]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            segments              []       [HAnimSegment]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            sites                 []       [HAnimSite]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFString   [in,out]
            skeletalConfiguration "BASIC"<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            skeleton              []       [HAnimJoint, HAnimSite]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            skin                  []      
            <s><span style="background:orange">[IndexedFaceSet,
                X3DGroupingNode, Shape]</span></s><span
              style="background:yellow">[IndexedFaceSet, IndexedFanSet,
              IndexedQuadSet, IndexedTriangleSet,
              IndexedTriangleStripSet]</span><o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFNode     [in,out]
            skinBindingCoord      NULL     [X3DCoordinateNode]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFNode     [in,out]
            skinBindingNormal     NULL     [X3DNormalNode]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFNode     [in,out]
            skinCoord             NULL     [X3DCoordinateNode]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFNode     [in,out]
            skinNormal            NULL     [X3DNormalNode]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFVec3f    [in,out]
            translation           0 0 0    (-∞,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFString   [in,out]
            version               ""<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  MFNode     [in,out]
            viewpoints            []       [HAnimSite]<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFVec3f    []      
            bboxCenter            0 0 0    (-∞,∞)<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">  SFVec3f    []      
            bboxSize              -1 -1 -1 [0,∞) or −1 −1 −1<o:p></o:p></span></p>
        <p class="MsoNormal" style="margin-left:18.75pt"><span
            style="font-size:8.5pt;font-family:"Courier
            New";color:black">}<o:p></o:p></span></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <p class="MsoNormal">As you can see, this node signature does
            include /metadata/ field.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">As you can also see, there is no /value/
            field.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Of note is that there is an HAnimHumanoid
            /info/ field for metadata information, an MFString array of
            “name=value” pairs.  Very clumsy to use in practice.  The
            X3D4 Architecture notes in 26.3.2 the preferred alternative
            approach:<o:p></o:p></p>
          <ul style="margin-top:0in" type="disc">
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><span
                style="background:yellow;mso-highlight:yellow">Metadata
                values from the
                <i>info</i> field can be equivalently encoded via
                MetadataSet containing related X3DMetadataObject nodes.</span>
              <o:p></o:p></li>
          </ul>
          <p class="MsoNormal">Conversions are provided by X3dTidy
            cleanup stylesheet, and converted examples online. (Not
            finding this information in X3D Scene Authoring Hints, will
            add it.)<o:p></o:p></p>
          <div
            style="mso-element:para-border-div;border:none;border-bottom:solid
            windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
            <p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <ul style="margin-top:0in" type="disc">
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1">HumanoidAnimation
              X3D Examples Archive<o:p></o:p></li>
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation">https://www.web3d.org/x3d/content/examples/HumanoidAnimation</a><o:p></o:p></li>
          </ul>
          <div
            style="mso-element:para-border-div;border:none;border-bottom:solid
            windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
            <p class="MsoNormal" style="border:none;padding:0in"><o:p> </o:p></p>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <ul style="margin-top:0in" type="disc">
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1">X3D
              Example Archives: Humanoid Animation, Characters, Jin LOA
              4<o:p></o:p></li>
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4Index.html</a><o:p></o:p></li>
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.html#hanim_JinLOA4">https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Characters/JinLOA4.html#hanim_JinLOA4</a><o:p></o:p></li>
          </ul>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><HAnimHumanoid DEF='hanim_JinLOA4' loa='4' name='JinLOA4' scale='0.0225
            0.0225 0.0225'>
            <o:p></o:p></p>
          <p class="MsoNormal">  <MetadataSet name='HAnimHumanoid.info' reference='<a class="moz-txt-link-freetext" href="https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid">https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid</a>' containerField='metadata'>
            <o:p></o:p></p>
          <p class="MsoNormal">    <MetadataString containerField='value' name='authorName' value='Jin
            Hoon Lee and Min Joo Lee, Chul Hee Jung and Myeong Won
            Lee'/>
            <br>
    <a class="moz-txt-link-rfc2396E" href="mailto:MetadataString containerField='value' name='authorEmail' value='myeongwonlee@gmail.com'/"><MetadataString containerField='value' name='authorEmail' value='myeongwonlee@gmail.com'/></a>
            <br>
    <MetadataString containerField='value' name='creationDate' value='31
            March 2011'/>
            <br>
    <MetadataString containerField='value' name='gender' value='female'/>
            <br>
    <MetadataFloat containerField='value' name='height' value='1.5'/>
            <br>
    <MetadataString containerField='value' name='humanoidVersion' value='"2.0"'/>
            <o:p></o:p></p>
          <div
            style="mso-element:para-border-div;border:none;border-bottom:solid
            windowtext 1.5pt;padding:0in 0in 1.0pt 0in">
            <p class="MsoNormal" style="border:none;padding:0in">  </MetadataSet>
              <br>
              <a name="hanim_humanoid_root" moz-do-not-send="true"></a>  <HAnimJoint DEF='hanim_humanoid_root' center='0
              36.709999
              -0.707600' containerField='skeleton' name='humanoid_root'><o:p></o:p></p>
            <p class="MsoNormal" style="border:none;padding:0in"><o:p></o:p></p>
          </div>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Reviewing X3D Tooltips confirms this
            answer to your question, along with convenient links to
            clauses in both specifications.  (Each of the node names
            e.g. HAnimHumanoid links to the current X3D Architecture CD1
            clause.)<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <ul style="margin-top:0in" type="disc">
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1">X3D
              Tooltips HAnimHumanoid
              <o:p></o:p></li>
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid">https://www.web3d.org/x3d/tooltips/X3dTooltips.html#HAnimHumanoid</a><o:p></o:p></li>
          </ul>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Now checking X3D Unified Object Model
            (X3DUOM) X3dUnifiedObjectModel-4.0.xml<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <ul style="margin-top:0in" type="disc">
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/specifications">https://www.web3d.org/specifications</a><o:p></o:p></li>
            <li class="MsoListParagraph"
              style="margin-left:0in;mso-list:l0 level1 lfo1"><a class="moz-txt-link-freetext" href="https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml">https://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</a><o:p></o:p></li>
          </ul>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">      <ConcreteNode
            name="HAnimHumanoid"><o:p></o:p></p>
          <p class="MsoNormal">         <InterfaceDefinition
specificationUrl=”<a class="moz-txt-link-freetext" href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid”">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimHumanoid”</a><o:p></o:p></p>
          <p class="MsoNormal">                              appinfo="The
            HAnimHumanoid node is used to: (a) store references to the
            joints, segments, sites, skeleton, optional skin, and fixed
            viewpoints, (b) serve as a container for the entire
            humanoid, (c) provide a convenient way of moving the
            humanoid through its environment, and (d) store
            human-readable metadata such as name, version, author,
            copyright, age, gender and other information."><o:p></o:p></p>
          <p class="MsoNormal">            <componentInfo
            name="HAnim" level="1"/><o:p></o:p></p>
          <p class="MsoNormal">            <Inheritance
            baseType="X3DChildNode"/><o:p></o:p></p>
          <p class="MsoNormal">            <AdditionalInheritance
            baseType="X3DBoundedObject"/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="bboxCenter"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="initializeOnly"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DBoundedObject"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Bounding
            box center accompanies bboxSize and provides an optional
            hint for bounding box position offset from origin of local
            coordinate system."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="bboxDisplay"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFBool"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="false"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DBoundedObject"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Whether
            to display bounding box for associated geometry, aligned
            with world coordinates."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="bboxSize"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="initializeOnly"<o:p></o:p></p>
          <p class="MsoNormal">                   default="-1 -1 -1"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DBoundedObject"<o:p></o:p></p>
          <p class="MsoNormal">                  
            baseType="bboxSizeType"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Bounding
            box size is usually omitted, and can easily be calculated
            automatically by an X3D player at scene-loading time with
            minimal computational cost."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="center"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  default="0 0 0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Translation offset from origin of local
            coordinate system."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="description"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Author-provided prose that describes intended
            purpose of this node."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="info"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Contains
            metadata keyword=value pairs, where approved keyword terms
            are humanoidVersion authorName authorEmail copyright
            creationDate usageRestrictions age gender height and
            weight."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="IS"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="IS"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="jointBindingPositions"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 0"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Specifies
            an array of position values for each HAnimJoint node in the
            joints field, in order, corresponding to each binding
            pose."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="jointBindingRotations"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFRotation"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 1 0"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Specifies
            an array of rotation values for each HAnimJoint node in the
            joints field, in order, corresponding to each binding
            pose."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="jointBindingScales"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 0"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Specifies
            an array of scale values for each HAnimJoint node in the
            joints field, in order, corresponding to each binding
            pose."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="joints"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimJoint"<o:p></o:p></p>
          <p class="MsoNormal">                   description="The
            joints field contains a list of USE references for all
            HAnimJoint node instances found within the preceding
            skeleton hierarchy."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="loa"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFInt32"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="-1"<o:p></o:p></p>
          <p class="MsoNormal">                   minInclusive="-1"<o:p></o:p></p>
          <p class="MsoNormal">                   maxInclusive="4"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="loaType"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Level Of
            Articulation 0."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="metadata"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="X3DMetadataObject"<o:p></o:p></p>
          <p class="MsoNormal">                
              inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Information about this node can be contained in
            a MetadataBoolean, MetadataDouble, MetadataFloat,
            MetadataInteger, MetadataString or MetadataSet node."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="motions"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimMotion"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Contains
            any HAnimMotion nodes that can animate the
            HAnimHumanoid."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="name"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:NMTOKEN"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Unique
            name attribute must be defined so that each HAnimHumanoid
            node in a scene can be identified at run time for animation
            purposes."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="rotation"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFRotation"<o:p></o:p></p>
          <p class="MsoNormal">             
                 accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 1 0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Orientation of children relative to local
            coordinate system."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="scale"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="1 1 1"<o:p></o:p></p>
          <p class="MsoNormal">                   minExclusive="0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Non-uniform x-y-z scale of child coordinate
            system, adjusted by center and scaleOrientation."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="scaleOrientation"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFRotation"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 1 0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Preliminary rotation of coordinate system
            before scaling (to allow scaling around arbitrary
            orientations)."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="segments"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimSegment"<o:p></o:p></p>
          <p class="MsoNormal">                   description="The
            segments field contains a list of USE references for all
            HAnimSegment node instances found within the preceding
            skeleton hierarchy."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="sites"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimSite"<o:p></o:p></p>
          <p class="MsoNormal">                   description="sites
            field contains a list of USE references for all HAnimSite
            node instances found within the preceding skeleton
            hierarchy."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="skeletalConfiguration"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="BASIC"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Models
            sharing a common skeletal configuration can share animations
            and binding poses."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="skeleton"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimJoint|HAnimSite"<o:p></o:p></p>
          <p class="MsoNormal">                   description="List of
            top-level HAnimJoint and HAnimSite nodes that create the
            skeleton model."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="skin"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="Group|Transform|Shape|IndexedFaceSet"<o:p></o:p></p>
          <p class="MsoNormal">                   description="List of
            one or more indexed mesh definitions (such as
            IndexedFaceSet) that utilize skinCoord point and skinNormal
            normal data."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="skinBindingCoord"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="X3DCoordinateNode"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Array of
            Coordinate nodes to handle non-default source pose so that
            both skin and skeleton can be in same binding pose."/><o:p></o:p></p>
          <p class="MsoNormal">            <field
            name="skinBindingNormal"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="X3DNormalNode"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Array of
            Normal nodes to handle non-default source pose so that both
            skin and skeleton can be in same binding pose."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="skinCoord"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="X3DCoordinateNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            description="Coordinate node utilized by indexed mesh
            definitions for skin."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="skinNormal"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="NULL"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="X3DNormalNode"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Single
            Normal node utilized by indexed mesh definitions for
            skin."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="translation"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFVec3f"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="0 0 0"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Position
            of children relative to local coordinate system."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="version"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="2.0"<o:p></o:p></p>
          <p class="MsoNormal">                  
            additionalEnumerationValuesAllowed="false"<o:p></o:p></p>
          <p class="MsoNormal">                  
            simpleType="hanimVersionChoices"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:NMTOKEN"<o:p></o:p></p>
          <p class="MsoNormal">                 
             description="HAnimHumanoid version, where value is 1."><o:p></o:p></p>
          <p class="MsoNormal">               <enumeration
            value="1.0"<o:p></o:p></p>
          <p class="MsoNormal">                           
            appinfo="International standard HAnim 19774 version 1
            approved by ISO in 2006. Note that HAnim version 2.0 has
            more capabilties, while version 1.0 includes several small
            incompatibilities. Since no other versions were formally
            approved, no other values are allowed for earlier HAnim
            versions."<o:p></o:p></p>
          <p class="MsoNormal">                           
documentation=<a class="moz-txt-link-rfc2396E" href="https://www.web3d.org/documents/specifications/19774/V1.0">"https://www.web3d.org/documents/specifications/19774/V1.0"</a>
            /><o:p></o:p></p>
          <p class="MsoNormal">               <enumeration
            value="2.0"<o:p></o:p></p>
          <p class="MsoNormal">                           
            appinfo="Revised standard HAnim 19774 version 2 (parts 1 and
            2) were approved by ISO in November 2019, published by Web3D
            Consortium May 2020."<o:p></o:p></p>
          <p class="MsoNormal">                           
documentation=<a class="moz-txt-link-rfc2396E" href="https://www.web3d.org/documents/specifications/19774/V2.0">"https://www.web3d.org/documents/specifications/19774/V2.0"</a>
            /><o:p></o:p></p>
          <p class="MsoNormal">            </field><o:p></o:p></p>
          <p class="MsoNormal">            <field name="viewpoints"<o:p></o:p></p>
          <p class="MsoNormal">                   type="MFNode"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            acceptableNodeTypes="HAnimSite"<o:p></o:p></p>
          <p class="MsoNormal">                   description="List of
            HAnimSite nodes containing Viewpoint nodes that appear in
            the skeleton model, usually as USE node references."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="visible"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFBool"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                   default="true"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DBoundedObject"<o:p></o:p></p>
          <p class="MsoNormal">                   description="Whether
            or not renderable content within this node is visually
            displayed."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="DEF"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:ID"<o:p></o:p></p>
          <p class="MsoNormal">                   description="DEF
            defines a unique ID name for this node, referenceable by
            other nodes."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="USE"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:IDREF"<o:p></o:p></p>
          <p class="MsoNormal">                   description="USE means
            reuse an already DEF-ed node ID, excluding all child nodes
            and all other attributes (except for containerField, which
            can have a different value)."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="class"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:NMTOKENS"<o:p></o:p></p>
          <p class="MsoNormal">                   description="The class
            attribute on each X3D node and statement is a
            space-separated list of classes, reserved for use by
            Cascading Style Sheets (CSS) and XML stylesheets."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="id"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                   baseType="xs:NMTOKEN"<o:p></o:p></p>
          <p class="MsoNormal">                   description="The id
            attribute on each X3D node and statement is considered a
            unique identifier when used as part of an encompassing
            HTML/DOM context."/><o:p></o:p></p>
          <p class="MsoNormal">            <field name="style"<o:p></o:p></p>
          <p class="MsoNormal">                   type="SFString"<o:p></o:p></p>
          <p class="MsoNormal">                  
            accessType="inputOutput"<o:p></o:p></p>
          <p class="MsoNormal">                  
            inheritedFrom="X3DNode"<o:p></o:p></p>
          <p class="MsoNormal">                   description="The style
            attribute on each X3D node and statement provides an inline
            block of CSS source for element styling, reserved for use by
            Cascading Style Sheets (CSS) and XML stylesheets."/><o:p></o:p></p>
          <p class="MsoNormal">            <containerField
            default="children" type="xs:NMTOKEN"/><o:p></o:p></p>
          <p class="MsoNormal">            <ContentModel><o:p></o:p></p>
          <p class="MsoNormal">               <GroupContentModel
            name="ChildContentModelCore" minOccurs="0"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="HAnimJoint" minOccurs="0" maxOccurs="unbounded"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="HAnimSegment" minOccurs="0" maxOccurs="unbounded"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="HAnimSite" minOccurs="0" maxOccurs="unbounded"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="HAnimMotion" minOccurs="0" maxOccurs="unbounded"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="Group"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="Transform"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="Shape"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="IndexedFaceSet"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="Coordinate"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="CoordinateDouble"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="Normal" minOccurs="0" maxOccurs="2"/><o:p></o:p></p>
          <p class="MsoNormal">               <NodeContentModel
            name="ProtoInstance" minOccurs="0"
            maxOccurs="unbounded"/><o:p></o:p></p>
          <p class="MsoNormal">            </ContentModel><o:p></o:p></p>
          <p class="MsoNormal">         </InterfaceDefinition><o:p></o:p></p>
          <p class="MsoNormal">      </ConcreteNode><o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Regarding python, I checked the
            conversion of JinLOA4.x3d to JinLOA4.py<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Stylesheet X3dToPython.xstl seemed to
            work OK <o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">   
HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">      skeleton=[<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">     
HAnimJoint(DEF='hanim_humanoid_root',center=(0,36.709999,-0.707600),name='humanoid_root',stiffness=[0,0,0],<o:p></o:p></span></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">but then got a self-validation error by
            the JinLOA4.py python program,
            <o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">create python:<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d">www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d</a>
              processing with X3dToPython stylesheet...<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py">www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py</a>
              self-validation tests...<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">validate python:<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">x3d.py package loaded, have fun with X3D
              Graphics!<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">Traceback (most recent call last):<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  File
"C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py">www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py</a>",
              line 169, in <module><o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">   
HAnimJoint(DEF='hanim_l_tarsal_distal_interphalangeal_1',center=(2.761,0.539400,5.125),name='l_tarsal_distal_interphalangeal_1',stiffness=[0,0,0],<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  File
              "C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\stylesheets\python\x3d\x3d.py">www.web3d.org\x3d\stylesheets\python\x3d\x3d.py</a>",
              line 43724, in __init__<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">    self.stiffness = stiffness<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  File
              "C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\stylesheets\python\x3d\x3d.py">www.web3d.org\x3d\stylesheets\python\x3d\x3d.py</a>",
              line 43873, in stiffness<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">    assertValidSFVec3f(stiffness)<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  File
              "C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\stylesheets\python\x3d\x3d.py">www.web3d.org\x3d\stylesheets\python\x3d\x3d.py</a>",
              line 3953, in assertValidSFVec3f<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">    raise X3DTypeError(str(value)[:100] + ',
              type=' + str(type(value)) + ' is not a valid Python tuple
              for SFVec3f')<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">x3d.X3DTypeError: [0, 0, 0], type=<class
              'list'> is not a valid Python tuple for SFVec3f<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">Result: 1<o:p></o:p></span></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Note how <span
              style="font-size:10.0pt;font-family:"Courier
              New"">
              stiffness=[0,0,0]</span>was given as a list in brackets,
            rather than a tuple value in parentheses
            <span style="font-size:10.0pt;font-family:"Courier
              New"">stiffness=(0,0,0)</span> as might be expected
            for SFVec3f, and so this is a useful diagnostic.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">However the actual specification type for
            stiffness is MFFloat.  (This was a mantis issue, might we
            tighten it to SFVec3f, but decided to keep it MFFloat in
            case more-advanced kinematics engines were someday of
            interest.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">*
<a class="moz-txt-link-freetext" href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-CD1/Part01/components/hanim.html#HAnimJoint</a><o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">26.3.3 HAnimJoint<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">HAnimJoint : X3DGroupingNode {<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">[…]<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  MFFloat    [in,out] stiffness        [0 0 0] 
              [0,1]<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Applied change to X3D DTD, X3D XML Schema
            and again autogenerated X3DUOM and x3d.py and X3D Ontology
            to match.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">23 DEC 2021, carlson brutzman<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">- restore type of HAnimJoint stiffness field as
              MFFloat (vice SFVec3f) to match<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  specification, since more-advanced kinematics
              engines might someday hold interest.<o:p></o:p></span></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">This fixed the stiffness error.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">However, next got a surprising conversion
            error (which might have been what you experienced
            originally):<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">=====================<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">create python:<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d">www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.x3d</a>
              processing with X3dToPython stylesheet...<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py">www.web3d.org\x3d\content\examples\HumanoidAnimation/Characters//JinLOA4.py</a>
              self-validation tests...<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">validate python:<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">x3d.py package loaded, have fun with X3D
              Graphics!Traceback (most recent call last):<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  File
"C:\x3d-code\<a class="moz-txt-link-abbreviated" href="http://www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py">www.web3d.org\x3d\content\examples\HumanoidAnimation\Characters\JinLOA4.py</a>",
              line 50, in <module><o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">   
HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">TypeError: HAnimHumanoid.__init__() got an
              unexpected keyword argument 'value'<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">Result: 1<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">=====================<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal">Which apparently was on line 1950,<o:p></o:p></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">  
value=MetadataSet(name='HAnimHumanoid.info',reference='<a class="moz-txt-link-freetext" href="https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid">https://www.web3d.org/documents/specifications/19774/V2.0/Architecture/ObjectInterfaces.html#Humanoid</a>',</span>etc.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">This conversion should have been <span
              style="font-size:10.0pt;font-family:"Courier
              New"">
              metadata=MetadataSet</span> etc. Looks like the field name
            for the HAnimHumanoid MetadataSet was not specified
            incorrectly, the automatic conversion by X3dTidy did not
            apply correct containerField value.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">I have added a rule to X3dTidy.xslt that
            looks for this case (for either representation, X3D3 or
            X3D4) and corrects it.  I have added a similar diagnostic
            rule to X3dSchematron checks.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">All affected HAnimHumanoid scenes have
            been updated and are now getting compiled correctly by
            Python.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">All changes checked into subversion. 
            Further regression testing continuing, website uploads to
            follow.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">So again thanks for exposing this issue. 
            Pretty complex but resolvable.  Once again the strict nature
            of Python aided us in achieving high Quality Assurance (QA)
            for X3D.<o:p></o:p></p>
          <p class="MsoNormal"><o:p> </o:p></p>
          <p class="MsoNormal">Happy holidays with X3D!   8)<span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New""><o:p> </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">all the best, Don<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">-- <o:p>
              </o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">Don Brutzman  Naval Postgraduate School, Code
              USW/Br        <a class="moz-txt-link-abbreviated" href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">Watkins 270,  MOVES Institute, Monterey CA
              93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p>
          <p class="MsoNormal"><span
              style="font-size:10.0pt;font-family:"Courier
              New"">X3D graphics, virtual worlds, navy robotics
              https://</span>
            <span style="font-size:10.0pt;font-family:"Courier
              New"">faculty.nps.edu/brutzman<o:p></o:p></span></p>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b>From:</b> John Carlson
              <a class="moz-txt-link-rfc2396E" href="mailto:yottzumm@gmail.com"><yottzumm@gmail.com></a> <br>
              <b>Sent:</b> Wednesday, December 22, 2021 12:44 PM<br>
              <b>To:</b> Brutzman, Donald (Don) (CIV)
              <a class="moz-txt-link-rfc2396E" href="mailto:brutzman@nps.edu"><brutzman@nps.edu></a>; X3D Graphics public mailing list
              <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public@web3d.org"><x3d-public@web3d.org></a><br>
              <b>Subject:</b> Re: HAnim, X3dToPython.xslt X3dToJson.xslt
              Upgrade X3DUOM?<o:p></o:p></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <div>
            <p class="MsoNormal">I believe I checked the right standard,
              here:<o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
            <div>
              <p class="MsoNormal"><a
href="https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html"
                  moz-do-not-send="true" class="moz-txt-link-freetext">https://www.web3d.org/documents/specifications/19774-1/V2.0/index.html</a><o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <p class="MsoNormal"> And neither value or metadata is a
              field????<o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
          </div>
          <div>
            <p class="MsoNormal">Seems a bit strange.<o:p></o:p></p>
          </div>
          <div>
            <p class="MsoNormal"><o:p> </o:p></p>
            <div>
              <div>
                <p class="MsoNormal">On Wed, Dec 22, 2021 at 2:20 PM
                  John Carlson <<a href="mailto:yottzumm@gmail.com"
                    moz-do-not-send="true" class="moz-txt-link-freetext">yottzumm@gmail.com</a>>
                  wrote:<o:p></o:p></p>
              </div>
              <blockquote style="border:none;border-left:solid #CCCCCC
                1.0pt;padding:0in 0in 0in
                6.0pt;margin-left:4.8pt;margin-right:0in">
                <div>
                  <p class="MsoNormal">hoping to see value field added
                    to HAnimHumanoid in X3DUOM, or some notice that the
                    package generating stylesheets are not up-to-date.<o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                </div>
                <div>
                  <p class="MsoNormal">Also, check to make sure
                    stiffness is assigned the right data structure
                    (between list and tuple).   And no, iOS, I do not
                    want “Tupperware” for the second time.   We need
                    more women mathematicians (sorry for any
                    stereotyping).  On that subject, I wonder what
                    coordinate system crocheted hats use?<o:p></o:p></p>
                </div>
                <div>
                  <p class="MsoNormal"><o:p> </o:p></p>
                  <div>
                    <div>
                      <p class="MsoNormal">On Mon, Dec 20, 2021 at 3:17
                        AM John Carlson <<a
                          href="mailto:yottzumm@gmail.com"
                          target="_blank" moz-do-not-send="true"
                          class="moz-txt-link-freetext">yottzumm@gmail.com</a>>
                        wrote:<o:p></o:p></p>
                    </div>
                    <blockquote style="border:none;border-left:solid
                      #CCCCCC 1.0pt;padding:0in 0in 0in
                      6.0pt;margin-left:4.8pt;margin-right:0in">
                      <div>
                        <p>Okay, now I seem to be having a similar
                          problem between my python serializer,
                          X3dToPython.xslt, and probably other
                          serialized stuff.  I couldn't figure out how
                          to fix the stiffness issue in
                          X3dToPython.xslt, but hand-editing saved that
                          on this particular python file
                          (python/net/x3djsonld/data/JinLOA4.py). Other
                          JinLOA's still have lists with Don's
                          generator.<o:p></o:p></p>
                        <p>I believe the main change I am dealing with
                          is metadata vs value containerFields.   See
                          JSON diff below.  I'm not seeing relevant
                          changes to X3D JSON schema 4.0.  Does
                          something need to be upgraded in X3DUOM or X3D
                          JSON schema?  I'm not seeing a value field in
                          HAnimHumanoid.<o:p></o:p></p>
                        <p><b><span style="font-family:"Courier
                              New";color:#5454FF;background:white">~/X3DJSONLD/src/main/python/net/coderextreme/data</span></b><span
                            style="font-family:"Courier
                            New";color:black;background:white">$
                            python JinLOA4.py  </span><span
                            style="font-family:"Courier New""><br>
                            Traceback (most recent call last): <br>
                             File
"/home/coderextreme/X3DJSONLD/src/main/python/net/coderextreme/data/JinLOA4.py",
                            line 148, in <module>
                            <br>
                               HAnimHumanoid23.setValue(MetadataSet24) <br>
                            AttributeError:
                            'org.web3d.x3d.jsail.HAnim.HAnimHumanoid'
                            object has no attribute 'setValue'. Did you
                            mean: 'setName'?
                            <br>
                            <b><span
                                style="color:#5454FF;background:white">~/X3DJSONLD/src/main/python/net/x3djsonld/data</span></b><span
                              style="color:black;background:white">$
                              python JinLOA4.py        </span><br>
                            x3d.py package loaded, have fun with X3D
                            Graphics! <br>
                            Traceback (most recent call last): <br>
                             File
"/home/coderextreme/X3DJSONLD/src/main/python/net/x3djsonld/data/JinLOA4.py",
                            line 50, in <module>
                            <br>
   HAnimHumanoid(DEF='hanim_JinLOA4',loa=4,name='JinLOA4',scale=(0.0225,0.0225,0.0225),version='2.0',
                            <br>
                            TypeError: HAnimHumanoid.__init__() got an
                            unexpected keyword argument 'value'</span><o:p></o:p></p>
                        <p><o:p> </o:p></p>
                        <p><o:p> </o:p></p>
                        <p><br>
                          <b><span style="font-family:"Courier
                              New";color:#5454FF;background:white">~/X3DJSONLD/src/main/data</span></b><span
                            style="font-family:"Courier
                            New";color:black;background:white">$
                            git diff JinLOA4.json
                          </span><span style="font-family:"Courier
                            New""><br>
                            <b><span
                                style="color:black;background:white">diff
                                --git a/src/main/data/JinLOA4.json
                                b/src/main/data/JinLOA4.json</span></b><span
                              style="color:black;background:white">
                            </span><br>
                            <b><span
                                style="color:black;background:white">index
                                c970a652a..e1930f4cf 100644</span></b><span
                              style="color:black;background:white">
                            </span><br>
                            <b><span
                                style="color:black;background:white">---
                                a/src/main/data/JinLOA4.json</span></b><span
                              style="color:black;background:white">
                            </span><br>
                            <b><span
                                style="color:black;background:white">+++
                                b/src/main/data/JinLOA4.json</span></b><span
                              style="color:black;background:white">
                            </span><br>
                            <span style="color:#18B2B2;background:white">@@
                              -78,7 +78,7 @@</span><span
                              style="color:black;background:white">
                            </span><br>
                                      }, <br>
                                      { <br>
                                        "@name":"translated", <br>
                            <span style="color:#B21818;background:white">-
                                         "@content":"14 October 2021"</span><span
                              style="color:black;background:white">
                            </span><br>
                            <span style="color:#18B218;background:white">+
                                         "@content":"20 December 2021"</span><span
                              style="color:black;background:white">
                            </span><br>
                                      }, <br>
                                      { <br>
                                        "@name":"generator", <br>
                            <span style="color:#18B2B2;background:white">@@
                              -116,7 +116,7 @@</span><span
                              style="color:black;background:white">
                            </span><br>
                                          "@loa":4, <br>
              "@scale":[0.0225,0.0225,0.0225], <br>
                                          "@version":"2.0", <br>
                            <span style="color:#B21818;background:white">-
                                           "-metadata":</span><span
                              style="color:black;background:white">
                            </span><br>
                            <span style="color:#18B218;background:white">+
                                           "-value":[</span><span
                              style="color:black;background:white">
                            </span><br>
                                            { "MetadataSet": <br>
                                              { <br>
                    "@name":"HAnimHumanoid.info", <br>
                            <span style="color:#18B2B2;background:white">@@
                              -160,7 +160,8 @@</span><span
                              style="color:black;background:white">
                            </span><br>
                                                  } <br>
                                                ] <br>
                                              } <br>
                            <span style="color:#B21818;background:white">-
                                             },</span><span
                              style="color:black;background:white">
                            </span><br>
                            <span style="color:#18B218;background:white">+
                                             }</span><span
                              style="color:black;background:white">
                            </span><br>
                            <span style="color:#18B218;background:white">+
                                           ],</span><span
                              style="color:black;background:white">
                            </span><br>
                                          "-skeleton":[ <br>
                                            { "HAnimJoint": <br>
                                              {<br>
                            <br>
                            ===================</span><o:p></o:p></p>
                        <p><span style="font-family:"Courier
                            New"">Validating JSON against schema:</span><o:p></o:p></p>
                        <p><b><span style="font-family:"Courier
                              New";color:#5454FF;background:white">~/X3DJSONLD/src/main/schema</span></b><span
                            style="font-family:"Courier
                            New";color:black;background:white">$
                            node ~/x3dvalidate/x3dvalidate.js
                            ../data/JinLOA4.json  </span><span
                            style="font-family:"Courier New""><br>
                            Loading schema <br>
                            Parsing schema <br>
                            Adding schema <br>
                            Schema 4.0 added <br>
                            Schema 4.0 compiled <br>
================================================================================
                            <br>
                            File: ../data/JinLOA4.json <br>
                            Error reading ../data/JinLOA4.json  <br>
                            keyword: required <br>
                            instancePath:
                            /X3D/Scene/-children/3/HAnimHumanoid <br>
                            message: must have required property @USE <br>
                            params: {"missingProperty":"@USE"} <br>
                            file: ../data/JinLOA4.json <br>
                            version: 4.0 <br>
                            <br>
                            keyword: additionalProperties <br>
                            instancePath:
                            /X3D/Scene/-children/3/HAnimHumanoid <br>
                            message: must NOT have additional properties
                            <br>
                            params: {"additionalProperty":"-value"} <br>
                            file: ../data/JinLOA4.json <br>
                            version: 4.0 <br>
                            <br>
                            keyword: oneOf <br>
                            instancePath:
                            /X3D/Scene/-children/3/HAnimHumanoid <br>
                            message: must match exactly one schema in
                            "oneOf" <br>
                            params: {"passingSchemas":null} <br>
                            file: ../data/JinLOA4.json <br>
                            version: 4.0</span><o:p></o:p></p>
                      </div>
                    </blockquote>
                  </div>
                </div>
              </blockquote>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
  </body>
</html>