I'm not sure why I can't put BallJoint inside RigidBodyCollection. See attached. Is it because the RigidBodyCollection.joints field is split? Indeed, when RigidBodyCollections.joints isn't split, the BallJoint error goes away.
Performing well-formed XML check...
Checking file:/C:/Users/jcarl/HAnimUtilityKit/RigidJin.x3d...
Well-formed XML check: pass
Performing DOCTYPE check...
[X3dDoctypeChecker] success: valid XML declaration found.[X3dDoctypeChecker] success: final X3D 4.0 DOCTYPE found.
Performing DTD validation...
Checking file:/C:/Users/jcarl/HAnimUtilityKit/RigidJin.x3d...
Referenced entity at "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd".
Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
Referenced entity at "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
cvc-complex-type.2.4.a: Invalid content was found starting with element 'BallJoint'. One of '{RigidBody, CollisionCollection, ProtoInstance}' is expected.
XML DTD validation: fail!
Performing X3D schema validation...
Checking file:/C:/Users/jcarl/HAnimUtilityKit/RigidJin.x3d...
Referenced entity at "http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd".
Referenced entity at "http://www.w3.org/2001/XMLSchema.dtd".
Referenced entity at "jrt:/java.xml/jdk/xml/internal/jdkcatalog/w3c/dtd/schema10/datatypes.dtd".
cvc-complex-type.2.4.a: Invalid content was found starting with element 'BallJoint'. One of '{RigidBody, CollisionCollection, ProtoInstance}' is expected.
XML schema validation: fail!
Performing X3D regular expression (regex) values check...
X3D regex check: complete
Performing X3D Schematron check...
X3D version 4.0 was approved by Web3D Consortium and ISO in 2023.[/X3D, diagnostic]
X3D version 4.0 offers many new features including interoperability with HTML5, glTF 2.0 Physically Based Rendering (PBR), and Web Audio API.[/X3D, diagnostic]
<rigidbody use="hanim_sacrum"> found USE node that precedes matching DEF node, count(following::*[@DEF=$USE])=1[/X3D/Scene/RigidBodyCollection/SingleAxisHingeJoint[1]/RigidBody[2], error]</rigidbody>
Here's a smaller file to play with. Try putting the RigidBodyCollection.bodies field between the two joints.
multiple errors are reported above, also note incorrect capitalization of RigidBody as rigidbody.
i recommend keeping DEF before USE until we know that various X3D browsers support that relaxation.
it is essential to remove errors. X3D XML Schema documentation, X3D DTD documentation, and X3D Tooltips offer further guidance.
Last edit: Don Brutzman 2026-07-26
Yes, I understood most of the other reported errors. I don’t know if
miscapitalization was done by sourceforge, I think sometimes, it gets super
eager on pasted stuff without appropriate bracketing.
Understood. I didn’t try DEF before USE, but listing the bodies field
before the joints field solved that. So, two birds killed with one stone.
Further exploration would put a joint before bodies field and others after
with proper DEF/USE ordering. I went for low hanging fruit.
I probably will delist the leading joint before the bodies field.
Something to do another day. I want to do more work on JinLOA1.x3d first.
That’s the next priority.