<div dir="ltr">I don't think that containerField_ALTERNATE_VALUES is correct for Shape.  This is perhaps related to the other rootNode issue, where rootNode gets overridden by children?<div><br></div><div>Look at X3DUOM possibilities for Shape containerFields.</div><div><br></div><div>Thanks for looking into this.   I'm going to start digging in <br><div><br></div><div>runone:<br>     [echo] Validate C:\x3d-code\<a href="http://www.web3d.org">www.web3d.org</a>\x3d\content\examples\Basic\Geospatial\SquawLOD023.json with classpath .:/x3d-code/<a href="http://www.web3d.org/x3d/stylesheets/java/jars/X3DJSAIL.4.0.full.jar">www.web3d.org/x3d/stylesheets/java/jars/X3DJSAIL.4.0.full.jar</a><br>     [java] Validating C:\x3d-code\<a href="http://www.web3d.org">www.web3d.org</a>\x3d\content\examples\Basic\Geospatial\SquawLOD023.json<br>     [java] org.web3d.x3d.sai.InvalidFieldValueException: Invalid setContainerFieldOverride() value='rootNode', legal values for Shape are containerField_ALTERNATE_VALUES='"children" "proxy" "shape"'<br>     [java]     at org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:401)<br>     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>     [java]     at Validate.main(Validate.java:18)<br>     [java]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br>     [java]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)<br>     [java]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>     [java]     at java.base/java.lang.reflect.Method.invoke(Method.java:568)<br>     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:218)<br>     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:155)<br>     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:891)<br>     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:231)<br>     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135)<br>     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108)<br>     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)<br>     [java]     at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)<br>     [java]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>     [java]     at java.base/java.lang.reflect.Method.invoke(Method.java:568)<br>     [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)<br>     [java]     at org.apache.tools.ant.Task.perform(Task.java:350)<br>     [java]     at org.apache.tools.ant.Target.execute(Target.java:449)<br>     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:470)<br>     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401)<br>     [java]     at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:36)<br>     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1264)<br>     [java]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:437)<br>     [java]     at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106)<br>     [java]     at jdk.internal.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)<br>     [java]     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br>     [java]     at java.base/java.lang.reflect.Method.invoke(Method.java:568)<br>     [java]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)<br>     [java]     at org.apache.tools.ant.Task.perform(Task.java:350)<br>     [java]     at java.base/java.util.Vector.forEach(Vector.java:1365)<br>     [java]     at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:67)<br>     [java]     at net.sf.antcontrib.logic.ForEach.executeSequential(ForEach.java:178)<br>     [java]     at net.sf.antcontrib.logic.ForEach.execute(ForEach.java:254)<br>     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)<br>     [java]     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br></div></div></div>