[x3d-public] announce: update releases for X3D Schematron and the X3DJSAIL Java library

Don Brutzman don.brutzman at gmail.com
Sun Jul 27 11:35:23 PDT 2025


Further work over the past few weeks has resulted in update releases of two
valuable open-source tools.

1.  X3D Schematron rule set has been updated online, complementing X3D
validation to detect and diagnose X3D model problems.

   - *X3D Schematron Validation and Quality Assurance (QA)*
   - X3D Schematron helps authors by providing quality assurance to ensure
   intended results in X3D scenes and metadata.
   - https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html

Summary of capabilities:

   - XML Schematron is a language for making assertions about the presence
   or absence of patterns in linked XML documents.
   - 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.
   - 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.

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!

   - X3D Resources, Examples: Scene Archives for X3D
   - 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.
   - X3D for Web Authors, X3D for Advanced Modeling, Basic, Conformance
   Nist, Humanoid Animation (HAnim), VRML 2 Sourcebook
   - https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples

X3D Schematron build log:

   -
   https://www.web3d.org/x3d/content/examples/build.validate.schematron.all.txt
   - 5MB.  5,108 minutes = 85 hours = 3 days 13 hours

More information on validation testing can be found at

   - X3D Resources: Quality Assurance (QA)
   -
   https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - -

2. *X3DJSAIL, the X3D Java Scene Access Interface Library (X3DJSAIL)*

   - X3D Java Scene Access Interface Library (X3DJSAIL) supports
   programmers with standards-based X3D Java interfaces and objects, all as
   open source.
   - https://www.web3d.org/specifications/java/X3DJSAIL.html

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.

Multiple improvements are included in this X3DJSAIL release, with the most
notable addition being built-in support for X3D Schematron diagnostics.

Now running latest openjdk Java 24.0.2 and building with latest NetBeans
26.

   - 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


   - *X3D Developers Guide* (see sections for Java
   <https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html#Java>
   and NetBeans
   <https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html#NetBeans>
   )
   - The X3D Developers Guide describes system configuration and setup
   recommendations that support various software projects supporting the
   Extensible 3D (X3D) Graphics International Standards.
   - https://www.web3d.org/x3d/content/examples/X3dDevelopersGuide.html
   - This page is directly derived from the original NPS Savage Developers
   Guide.

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.

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.

   - https://www.web3d.org/x3d/content/examples/build.all.log.txt
   - 2501 minutes = 41.7 hours, 99MB

Documentation and changes:

   - X3DJSAIL API Javadoc
   - https://www.web3d.org/specifications/java/javadoc


   - *Complete.* Add per-model capabilities for X3D Schematron Validation
   and Quality Assurance (QA)
   <https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html> using
   diagnostics ruleset X3dSchematronValidityChecks.sch
   <https://www.web3d.org/x3d/tools/schematron/X3dSchematronValidityChecks.sch>
    with X3dSchematronValidityChecks.xslt
   <https://www.web3d.org/specifications/java/lib/stylesheets/X3dSchematronValidityChecks.xslt>
    and SvrlReportText.xslt
   <https://www.web3d.org/specifications/java/lib/stylesheets/SvrlReportText.xslt>
    stylesheets.
   - *Complete*. Added utility methods setFieldOfView(SFVec4f newValue)
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/OrthoViewpoint.html#setFieldOfView(org.web3d.x3d.jsail.fields.SFVec4f)>
    and setFieldOfView(float minimum_x, float minimum_y, float maximum_x,
   float maximum_y)
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/OrthoViewpoint.html#setFieldOfView(float,float,float,float)>.
   Nevertheless, multiple counterintuitive *MFFloat* accessor methods also
   appear... Probably need to change *fieldOfView* field to type *SFVec4f*,
   for programmer clarity when handling the *fieldOfView* field, as
   recommended by Mantis 1398 <https://mantis.web3d.org/view.php?id=1398>.
   - *Considered but not possible.* Cannot add convenience methods for
   variable-length arguments (varargs
   <https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html>)
   since they get converted into an array of primitives by the compiler; such
   array methods are already supported in X3DJSAIL.
   - *Complete*. Corrected emergent errors detected during unit testing by
   fixing implementations of .equals() method for MF types (example
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFInt32.html#equals(org.web3d.x3d.jsail.fields.MFInt32)>).
   Added missing .toString() method for types SFNode
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/SFNode.html>
    and MFNode
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFNode.html>
   .
   - *Continuing.* Checks for optional/required MFString enumeration pairs
   are much improved, for examples see source for fields Layout.align
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Layout/Layout.html#setAlign(java.lang.String%5B%5D)>
    (tooltip
   <https://www.web3d.org/x3d/content/X3dTooltips.html#Layout.align>) and
   NavigationInfo.type
   <https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Navigation/NavigationInfo.html#setType(java.lang.String%5B%5D)>
    (tooltip
   <https://www.web3d.org/x3d/content/X3dTooltips.html#NavigationInfo.type>).
   Further checking continues to ensure that all allowed values (such as
   singletons) are included in X3D XML Schema and X3DUOM.
   - Web3D Consortium provides issue tracking for X3DJSAIL at SourceForge
   X3D Tickets <https://sourceforge.net/p/x3d/tickets>.
   - It is always interesting to consider adding additional utility
   methods, as needed. Suggestions are welcome!

Thanks to Web3D Consortium for sustained support of these open-source
libraries under version control in SourceForge.  License information:

   - Web3D Consortium Open Source License
   - https://www.web3d.org/x3d/content/examples/license.txt
   - https://www.web3d.org/x3d/content/examples/license.html
   - X3D Resources: License Support
   - https://www.web3d.org/x3d/content/examples/X3dResources.html#license

Have fun with X3d using Schematron and X3DJSAIL Java!  😀👍

all the best, Don
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20250727/8a571150/attachment.html>


More information about the x3d-public mailing list