[x3d-public] Fwd: Getting JSON that works, Canonical JSON

John Carlson yottzumm at gmail.com
Fri Mar 27 09:00:17 PDT 2026


What’s going on is that Holger’s x3d-tidy is reordering fields, and handing
DEF/USE properly, but X3DJSAIL’s field ordering is fixed.    I personally
don’t know how to fix X3DJSAIL, unless it can handle DEF/USE node
reordering like x3d-tidy.

So really, the onus is on X3DJSAIL to output DEF/USE properly.  Perhaps
through a technique, stylesheet or process that reorders DEF/USE nodes
properly, canonicalization, etc.

Hence recent efforts to redefine DEF/USE in the standard.

The real answer is to handle X3D like a direct acyclic graph, instead of a
tree.  This is a post process to XML loading into DOM in X3DJSAIL, and has
everything to do with scenegraph loading and proper XML output of the
scenegraph.

Nice work, Holger, bringing this to a head.

Maybe this is why X3DPSAIL doesn’t load XML.

Since X3DJSONLD doesn’t load a scenegraph, I’ve skirted this issue.  Which
scenegraph should I use?

John
---------- Forwarded message ---------
From: John Carlson <yottzumm at gmail.com>
Date: Fri, Mar 27, 2026 at 10:19 AM
Subject: Getting JSON that works, Canonical JSON
To: X3D Graphics public mailing list <x3d-public at web3d.org>


To be clear:

.x3d->x3d-tidy->.x3dj->X3DJSONLD->DOM->Serializer->Java,
etc.->X3DJSAIL/stylesheets->XML, JSON, (more?) probably won’t work in many
cases, due to DEF/USE reordering within SFNode field reordering.  I am not
saying the .x3dj files are bad files.

x3d->X3dToJson.xslt->.json->X3DJSONLD->DOM->Serializer->Java,
etc.->X3DJSAIL/stylesheets->XML,
JSON, (more?) probably will work.

Using Canonical form might solve this issue.  But what is canonical JSON?

Specific ordering issues that that have come up include head statements,
HAnimHumanoid and HAnimSegment nodes.

Please try to ensure that the authors ordering is preserved, or use
canonical form.

Note that X3DJSONLD *should* act like a pass through.  But further work to
achieve canonical form may be desired.

X3DJSAIL/stylesheets should stick with canonical form, if it uses it, but
warn of potential DEF/USE reordering, if it can’t handle DEF/USE reordering
under canonicalization.

x3d-tidy should also stick with canonical form, or not modify canonical
form or alternatively, author’s intent.

Does this seem reasonable?

John

>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20260327/c817d353/attachment.html>


More information about the x3d-public mailing list