<div dir="auto">Okay, I am seeing omitObsoleteAttributes in X3dTidy.xslt documentation, and stripDefaultAttributes in X3dToJson.xslt documentation, something to try out. I was hoping for a “do not add additional default values” in X3dToJson.xslt. Use the author’s intention.</div><div dir="auto"><br></div><div dir="auto">Is there something to add containerFields where required by X3DJSAIL? I’m working on that in X3DJSONLD.java.</div><div dir="auto"><br></div><div dir="auto">No need to rush to fix these things. I don’t have a pressing need.</div><div dir="auto"><br></div><div dir="auto">Hmm!</div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 26, 2023 at 9:21 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">So I've been working on X3DJSONLD.java JSON to XML conversion. Since there are many additions through the use of X3dToJson.xslt, namely @ulimit and and @llimit properties which have default values, I cannot properly diff my XML HAnim output against the original XML X3D. I can delete these defaults X3DJSONLD.java and X3DJSONLD.js, but that seems like it's adding some complexity, which perhaps is unnecessary.</div><div dir="ltr"><br></div><div dir="ltr">So I thought, maybe I can use the X3d Tidy spreadsheet to remove these defaults. Maybe not..</div><div dir="ltr"><br></div><div dir="ltr">Here is the X3d Tidy spreadsheet running against the original KoreanCharacterMotionAnnexD01Jin.x3d, which I believe is here:</div><div dir="ltr"><br></div><div dir="ltr"><a href="https://www.web3d.org/x3d-resources/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html" target="_blank">https://www.web3d.org/x3d-resources/content/examples/HumanoidAnimation/Specifications/KoreanCharacterMotionAnnexD01JinIndex.html</a></div><div dir="ltr"><br></div><div dir="ltr">I discovered all these ulimit and llimit fields being added to my tidied output! See attached original and tidied XML output. See below for false flags announcing that ulimit and llimit are omitted, when they are not.</div><div dir="ltr"><br></div><div dir="ltr">See:</div><div dir="ltr"><br></div><div dir="ltr"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimJoint" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4-DIS/Part01/components/hanim.html#HAnimJoint</a></div><div dir="ltr"><br></div><div dir="ltr">For ulimit and llimit defaults.</div><div dir="ltr"><br></div><div>I am using Saxon as packaged with X3DJSAIL. I am not testing with the latest X3DJSAIL jar, but I'll download that now.</div><div dir="ltr"><br></div><div dir="ltr">Thanks!</div><div dir="ltr"><br></div><div dir="ltr">John<br><div><br></div><div><div>batchtidy:</div><div> [echo] Run tidy:</div><div> [apply] outdir</div><div> [apply] BEGIN C:\Users\john\x3dschema\examples\KoreanCharacterMotionAnnexD01Jin.x3d</div><div> [apply] out C:\Users\john\x3dschema\examples\KoreanCharacterMotionAnnexD01Jin.tidy.new.xml</div><div> [apply] *** HAnimJoint USE='hanim_humanoid_root' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_humanoid_root' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_sacroiliac' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_sacroiliac' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_vl5' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_vl5' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_skullbase' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_skullbase' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_elbow' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_elbow' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_elbow' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_elbow' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_hip' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_hip' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_hip' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_hip' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_knee' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_knee' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_knee' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_knee' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_metatarsophalangeal_2' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_metatarsophalangeal_2' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_metatarsophalangeal_2' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_metatarsophalangeal_2' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_radiocarpal' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_radiocarpal' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_radiocarpal' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_radiocarpal' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_shoulder' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_shoulder' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_shoulder' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_shoulder' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_talocrural' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_l_talocrural' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_talocrural' containerField='joints' has disallowed attribute llimit='0 0 0', now omitted</div><div> [apply] *** HAnimJoint USE='hanim_r_talocrural' containerField='joints' has disallowed attribute ulimit='0 0 0', now omitted</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] C:\Users\john\x3dschema\examples\KoreanCharacterMotionAnnexD01Jin.tidy.new.xml</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] *** containerField mismatch - found it #3 containerField DEF='' containerField='segments' expectedContainerField='segments'</div><div> [apply] =======================================================================================================</div><div> [apply] HAnimHumanoid skeleton holds X3D4 HAnim2 triplets, HAnimJoint (18) : HAnimSegment (18) : HAnimSite (0)</div><div> [apply] =======================================================================================================</div><div> [apply] HAnimHumanoid DEF='hanim_AnnexD01Jin name='AnnexD01Jin' loa='-1'</div><div> [apply] humanoid_root : sacrum</div><div> [apply] sacroiliac : pelvis</div><div> [apply] l_hip : l_thigh</div><div> [apply] | l_knee : l_calf</div><div> [apply] | l_talocrural : l_talus</div><div> [apply] | l_metatarsophalangeal_2 : l_tarsal_proximal_phalanx_2</div><div> [apply] r_hip : r_thigh</div><div> [apply] | r_knee : r_calf</div><div> [apply] | r_talocrural : r_talus</div><div> [apply] | r_metatarsophalangeal_2 : r_tarsal_proximal_phalanx_2</div><div> [apply] vl5 : l5</div><div> [apply] skullbase : skull</div><div> [apply] l_shoulder : l_upperarm</div><div> [apply] | l_elbow : l_forearm</div><div> [apply] | l_radiocarpal : l_carpal</div><div> [apply] r_shoulder : r_upperarm</div><div> [apply] r_elbow : r_forearm</div><div> [apply] r_radiocarpal : r_carpal</div><div> [apply] =======================================================================================================</div><div> [apply] END C:\Users\john\x3dschema\examples\KoreanCharacterMotionAnnexD01Jin.x3d</div><div><br></div><div>BUILD SUCCESSFUL</div><div>Total time: 3 seconds</div></div></div></div></div></div></div>
</blockquote></div></div>