<div dir="auto">I have been considering replacing X3DJSONLD’s stylesheet use with X3DJSAIL only.</div><div dir="auto"><br></div><div dir="auto">I see benefits and disadvantages:</div><div dir="auto"><br></div><div dir="auto">* I no longer have to support RunSaxon.java</div><div dir="auto"><br></div><div dir="auto">* It’s slightly harder to support my changes to stylesheets, and with more dependence on others.</div><div dir="auto"><br></div><div dir="auto">* RunSaxon.java takes multiple files at the command line. </div><div dir="auto"><br></div><div dir="auto">* RunSaxon.java creates a list  of files transformed.  This is probably the most important advantage.</div><div dir="auto"><br></div><div dir="auto">* RunSaxon.java allows you to run any stylesheet.  I don’t know if X3DJSAIL supports this.</div><div dir="auto"><br></div><div dir="auto">* I have to replace code that’s be working for a long time.</div><div dir="auto"><br></div><div dir="auto">If someone wants to support some of RunSaxon’s features, here’s the source,  I can probably dual license if you want to crib code:</div><div dir="auto"><br></div><div dir="auto"><div dir="auto"><a href="https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/java/net/coderextreme/RunSaxon.java">https://github.com/coderextreme/X3DJSONLD/blob/master/src/main/java/net/coderextreme/RunSaxon.java</a></div><br></div><div dir="auto"><div class="gmail_quote gmail_quote_container" dir="auto"><div dir="ltr" class="gmail_attr">On Sun, Jul 27, 2025 at 9:15 PM 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="auto">So perhaps the next step is to compile with of Graal native-image to produce binaries.  Maybe l run a few performance tests before totally committing to it.   You will need to      determine any reflectivity loaded classes, but there are tools for that.</div><div dir="auto"><br></div><div dir="auto">Have with native-image! Woohoo!</div><div dir="auto"><br></div><div dir="auto">Or just create a renderer for X3DJSAIL, but that’s a lot of work!  Catch low hanging fruit!</div><div dir="auto"><br></div><div dir="auto">John<br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Sun, Jul 27, 2025 at 1:36 PM Don Brutzman via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</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">Further work over the past few weeks has resulted in update releases of two valuable open-source tools.<div><br></div><div>1.  X3D Schematron rule set has been updated online, complementing X3D validation to detect and diagnose X3D model problems.</div><div><ul><li><b>X3D Schematron Validation and Quality Assurance (QA)</b></li><li>X3D Schematron helps authors by providing quality assurance to ensure intended results in X3D scenes and metadata.</li><li><a href="https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html" target="_blank">https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html</a></li></ul>Summary of capabilities:<br><ul><li>XML Schematron is a language for making assertions about the presence or absence of patterns in linked XML documents.</li><li>X3D Schematron provides an additional form of XML validation for X3D scenes. Authors can use X3D Schematron reports to verify semantic correctness and detect internal-consistency problems.</li><li>X3D Schematron validation rules have greater expressive power than DOCTYPE and Schema constraints, and are most effective when applied following initial DOCTYPE and Schema validation.</li></ul><div>A comprehensive test of X3D Schematron has been applied to all models in the X3D Example Models Archive.  This was a big job, providing comprehensive diagnostics across multiple big libraries.  Lots of model refinements await!</div></div><div><ul><li>X3D Resources, Examples: Scene Archives for X3D</li><li>The X3D Examples Archives demonstrate how X3D nodes and scenes work. Thousands of scenes are provided in all X3D encodings. You can browse them individually online or download fully complete, separately installable .zip archives.</li><li>X3D for Web Authors, X3D for Advanced Modeling, Basic, Conformance Nist, Humanoid Animation (HAnim), VRML 2 Sourcebook</li><li><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</a></li></ul></div><div>X3D Schematron build log:</div><div><ul><li><a href="https://www.web3d.org/x3d/content/examples/build.validate.schematron.all.txt" target="_blank">https://www.web3d.org/x3d/content/examples/build.validate.schematron.all.txt</a></li><li>5MB.  5,108 minutes = 85 hours = 3 days 13 hours</li></ul></div><div><div><div>More information on validation testing can be found at</div></div><div><ul><li style="margin-left:15px">X3D Resources: Quality Assurance (QA)</li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance</a></li></ul><div>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - </div></div></div><div><br></div><div>2. <b>X3DJSAIL, the X3D Java Scene Access Interface Library (X3DJSAIL)</b></div><ul><li>X3D Java Scene Access Interface Library (X3DJSAIL) supports programmers with standards-based X3D Java interfaces and objects, all as open source.</li><li><a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">https://www.web3d.org/specifications/java/X3DJSAIL.html</a></li></ul><div>X3DJSAIL is designed to make it easy for Java programmers to create high-quality X3D models, perform conversions, launch tools.  The combined strictness of Java, XML, and the X3D architecture means it is actually quite difficult to create an invalid X3D model.</div><div><br></div><div>Multiple improvements are included in this X3DJSAIL release, with the most notable addition being built-in support for X3D Schematron diagnostics.</div><div><br></div><div>Now running latest openjdk Java 24.0.2 and building with latest NetBeans 26.  </div><div><ul><li>Note recent changes to Java have led to much stricter handling of XML documents with many character-entity definitions... X3D is a big modeling language, so there are several such files.  Configuration details for building X3DJSAIL and other Java tools can be found at</li></ul><div><ul><li style="margin-left:15px"><i>X3D Developers Guide</i> (see sections for <a href="https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html#Java" target="_blank">Java</a> and <a href="https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html#NetBeans" target="_blank">NetBeans</a>)</li><li style="margin-left:15px">The X3D Developers Guide describes system configuration and setup recommendations that support various software projects supporting the Extensible 3D (X3D) Graphics International Standards.</li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html" target="_blank">https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html</a></li><li style="margin-left:15px">This page is directly derived from the original NPS Savage Developers Guide.</li></ul><div>Every model in the X3D Examples Archives includes a corresponding Java version that is autogenerated from the .x3d (XML) originals, compiled and executed to run a self test.</div><div><br></div><div><div><div>The comprehensive log file that tests X3DJSAIL against all of the examples is online as follows.  It is always a good idea to check a model for warnings or errors prior to running it in an X3D player or another modeling tool.  Improvements are ongoing.</div><div><ul><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/build.all.log.txt" target="_blank">https://www.web3d.org/x3d/content/examples/build.all.log.txt</a></li><li style="margin-left:15px">2501 minutes = 41.7 hours, 99MB</li></ul></div></div><div>Documentation and changes:</div></div></div></div><div><ul><li>X3DJSAIL API Javadoc</li><li><a href="https://www.web3d.org/specifications/java/javadoc" target="_blank">https://www.web3d.org/specifications/java/javadoc</a></li></ul><div><ul style="font-family:"Times New Roman";font-size:medium;color:rgb(0,0,0)"><li style="font-family:"Times New Roman""><i style="font-family:"Times New Roman";color:darkgreen">Complete.</i> Add per-model capabilities for <a href="https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html" target="_blank" style="font-family:"Times New Roman"">X3D Schematron Validation and Quality Assurance (QA)</a> using diagnostics ruleset <a href="https://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch" target="_blank" style="font-family:"Times New Roman"">X3dSchematronValidityChecks.sch</a> with <a href="https://www.web3d.org/specifications/java/lib/stylesheets/X3dSchematronValidityChecks.xslt" target="_blank" style="font-family:"Times New Roman"">X3dSchematronValidityChecks.xslt</a> and <a href="https://www.web3d.org/specifications/java/lib/stylesheets/SvrlReportText.xslt" target="_blank" style="font-family:"Times New Roman"">SvrlReportText.xslt</a> stylesheets.</li><li style="font-family:"Times New Roman""><span style="font-family:"Times New Roman";color:darkgreen"><i style="font-family:"Times New Roman"">Complete</i></span>. Added utility methods <code style="font-family:monospace"><a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/OrthoViewpoint.html#setFieldOfView(org.web3d.x3d.jsail.fields.SFVec4f)" target="_blank" style="font-family:monospace">setFieldOfView(SFVec4f newValue)</a></code> and <code style="font-family:monospace"><a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/OrthoViewpoint.html#setFieldOfView(float,float,float,float)" target="_blank" style="font-family:monospace">setFieldOfView(float minimum_x, float minimum_y, float maximum_x, float maximum_y)</a></code>. Nevertheless, multiple counterintuitive <i style="font-family:"Times New Roman"">MFFloat</i> accessor methods also appear... Probably need to change <i style="font-family:"Times New Roman"">fieldOfView</i> field to type <i style="font-family:"Times New Roman"">SFVec4f</i>, for programmer clarity when handling the <i style="font-family:"Times New Roman"">fieldOfView</i> field, as recommended by <a href="https://mantis.web3d.org/view.php?id=1398" target="_blank" style="font-family:"Times New Roman"">Mantis 1398</a>.</li><li style="font-family:"Times New Roman""><i style="font-family:"Times New Roman";color:darkorange">Considered but not possible.</i> Cannot add convenience methods for variable-length arguments (<a href="https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html" target="_blank" style="font-family:"Times New Roman"">varargs</a>) since they get converted into an array of primitives by the compiler; such array methods are already supported in X3DJSAIL.</li><li style="font-family:"Times New Roman""><span style="font-family:"Times New Roman";color:darkgreen"><i style="font-family:"Times New Roman"">Complete</i></span>. Corrected emergent errors detected during unit testing by fixing implementations of <code style="font-family:monospace">.equals()</code> method for MF types (<a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFInt32.html#equals(org.web3d.x3d.jsail.fields.MFInt32)" target="_blank" style="font-family:"Times New Roman"">example</a>). Added missing <code style="font-family:monospace">.toString()</code> method for types <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/SFNode.html" target="_blank" style="font-family:"Times New Roman"">SFNode</a> and <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFNode.html" target="_blank" style="font-family:"Times New Roman"">MFNode</a>.</li><li style="font-family:"Times New Roman""><i style="font-family:"Times New Roman";color:darkorange">Continuing.</i> Checks for optional/required MFString enumeration pairs are much improved, for examples see source for fields <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Layout/Layout.html#setAlign(java.lang.String%5B%5D)" target="_blank" style="font-family:"Times New Roman"">Layout.align</a> (<a href="https://www.web3d.org/x3d/content/X3dTooltips.html#Layout.align" target="_blank" style="font-family:"Times New Roman"">tooltip</a>) and <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/NavigationInfo.html#setType(java.lang.String%5B%5D)" target="_blank" style="font-family:"Times New Roman"">NavigationInfo.type</a> (<a href="https://www.web3d.org/x3d/content/X3dTooltips.html#NavigationInfo.type" target="_blank" style="font-family:"Times New Roman"">tooltip</a>). Further checking continues to ensure that all allowed values (such as singletons) are included in X3D XML Schema and X3DUOM.</li><li style="font-family:"Times New Roman"">Web3D Consortium provides issue tracking for X3DJSAIL at <a href="https://sourceforge.net/p/x3d/tickets" target="_blank" style="font-family:"Times New Roman"">SourceForge X3D Tickets</a>.</li><li style="font-family:"Times New Roman"">It is always interesting to consider adding additional utility methods, as needed. Suggestions are welcome!</li></ul><div><div><div>Thanks to Web3D Consortium for sustained support of these open-source libraries under version control in SourceForge.  License information:</div></div></div><div><ul><li style="margin-left:15px">Web3D Consortium Open Source License</li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/license.txt" target="_blank">https://www.web3d.org/x3d/content/examples/license.txt</a></li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/license.html" target="_blank">https://www.web3d.org/x3d/content/examples/license.html</a></li><li style="margin-left:15px">X3D Resources: License Support</li><li style="margin-left:15px"><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#license" target="_blank">https://www.web3d.org/x3d/content/examples/X3dResources.html#license</a></li></ul></div><div><font face="arial, sans-serif" style="font-family:arial,sans-serif;color:rgb(0,0,0)">Have fun with X3d using Schematron and X3DJSAIL Java!  </font>😀👍</div></div><div><br></div><div>all the best, Don</div><div><br></div></div></div>
</div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>
</blockquote></div></div>