<div dir="ltr">Congratulations on configuring your system to run things differently.<div><br></div><div>I do not expect that anyone else needs such gyrations since the stylesheets are included within the X3DJSAIL.4.0.full.jar file, and all paths are relative there.</div><div><br></div><div>Once again the
X3dSchematronValidityChecks.xslt is quite a large and complex construct - most rules have straightforward logic for what they are checking, but it uses XPath expressions to examine various nodes and fields in an X3D model for logical consistency and correctness. There is no attempt to duplicate functionality provided by X3D XML Schema and DOCTYPE since they do a good job at validation of legal values already. Summary of expressive power:</div><div><ul><li>X3D Resources, Quality Assurance (QA)</li></ul><p style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium;display:inline!important"></p><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">X3D Quality Assurance (QA) identifies errors and warnings in order to make X3D scene content more portable and reliable. Improved Quality Assurance (QA) helps achieve intended results in X3D scenes and metadata.<br>This is important. providing high confidence that when 3D modeling errors occur, they can be detected and then corrected. As a result, X3D models can run in many different file formats and programming languages, equivalently and correctly.<ul style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><li><a href="https://savage.nps.edu/X3dValidator">X3D Validator</a> (currently only available within X3D-Edit) provides a server-based suite of tests to help ensure the quality of X3D scenes and metadata. Validation tests include:</li></ul><ul><li><a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#Validation">XML header and DOCTYPE</a> checking for correct document headers</li></ul><ul><li><a href="https://en.wikipedia.org/wiki/XML#Well-formedness_and_error-handling">Well-formed XML</a> checking for syntactic correctness</li></ul><ul><li><a href="https://www.web3d.org/specifications">X3D Specifications: Schema and DOCTYPE Validation</a> checking for valid X3D nodes, fields and values</li></ul><ul><li><a href="https://www.web3d.org/x3d/stylesheets/X3dToVrml97.xslt">X3D to ClassicVRML conversion</a> checks a variety of legal X3D constructs</li></ul><ul><li><a href="https://www.web3d.org/specifications/X3dRegularExpressions.html">Regular expression (regex) checking</a> (<a href="https://www.web3d.org/pipermail/x3d-public_web3d.org/2012-March/001950.html">design discussion</a>) for malformed floating-point numbers and excess leading zeros.</li></ul><ul><li><a href="https://www.web3d.org/x3d/tools/schematron/X3dSchematron.html">X3D Schematron</a> rule checking verifies semantic correctness and completeness, detecting internal-consistency problems to help assure the quality and correctness of X3D scenes</li></ul><ul><li><a href="https://www.web3d.org/x3d/stylesheets/X3dTidy.html">X3D Tidy</a> helps authors automatically correct fixable errors in X3D scenes.</li></ul><ul><li><a href="https://www.web3d.org/x3d/stylesheets/X3dToXhtml.xslt">X3D to XHTML conversion</a> pretty-print listing to check online URL links, document ROUTE connections, and provide node tooltips</li></ul><ul><li>Support for .html/.xhtml pages containing X3DOM support for X3D models. Errors or warnings are provided as appropriate for experimental attributes and interspersed HTML elements.</li></ul><ul><li>X3D Validator is written in Java using <a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/tools/X3dQualityAssurance/X3dValidator">publicly available source code</a>.</li></ul><ul><li>Validation of ClassicVRML (.x3dv) and VRML97 (.wrl) output files can be performed using <a href="https://castle-engine.io/castle-model-converter" target="_blank">castle-model-viewer</a> in command-line mode.</li></ul></blockquote><p></p><ul><li><a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance">https://www.web3d.org/x3d/content/examples/X3dResources.html#QualityAssurance</a></li></ul><div>Yes the operation of X3D Schematron is relatively slow, since the 1MB ruleset get converted into a (gulp) 91MB stylesheet.</div><div><br></div><div>The X3DJSAIL library is written in Java and uses Saxon for XLST operations, currently bundling the open-source "Home Edition" saxon-he-12.5.jar package. In addition to Java, Saxon offers support for C#, C++, PHP, Python.</div><div><br></div><div>A few years back, this work was using compiled stylesheets for improved performance. However that capability got split out into the Saxon Enterprise Edition. More information on compiled stylesheets is available at</div><div><ul><li>Saxonica > Saxon > Using XSLT > Compiled Stylesheets</li><li><a href="https://www.saxonica.com/documentation12/index.html#!using-xsl/compiling">https://www.saxonica.com/documentation12/index.html#!using-xsl/compiling</a></li><li>"With Saxon-EE it is also possible to export the compiled form of a stylesheet as an XML file (called the stylesheet export file), in much the same way that object code from other languages is saved to filestore, and distributed from developers to users."</li></ul><div>I will not be integrating commercially licensed packages into X3DJSAIL, keeping it a fully open-source package. You and others are of course welcome to do what you want.</div></div><div><br></div><div>Incidentally have noticed that latest version of Saxon is 12.8. Will upgrade, this affects a number of projects.</div><div><br></div><div>Have fun with X3D Schematron!</div><div><br></div><div>all the best, Don</div><div><br></div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Wed, Jul 30, 2025 at 7:26 AM John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Add to your X3DJSAIL.properties file in your CLASSPATH<div><br></div><div>STYLESHEET_X3DSCHEMATRON_SVRLREPORT="../lib/stylesheets/SvrlReportText.xslt";<br>STYLESHEET_X3DSCHEMATRON="../lib/stylesheets/X3dSchematronValidityChecks.xslt";</div><div><br></div><div>Pick the correct paths you wish.</div><div><br></div><div>In CoderSchematron.java</div><div><br></div><div>import org.web3d.x3d.jsail.CommandLine;<br><br>public class CoderSchematron {<br> public static void main(String args[]) {<br> for (int a = 0; a < args.length; a++) {<br> try {<br> String source = args[a];<br> org.web3d.x3d.jsail.CommandLine.main(new String[] {<br> "-schematron",<br> source,<br> "-tofile",<br> source+".new.schematron.txt"<br> });<br> } catch (Exception e) {<br> e.printStackTrace();<br> }<br> }<br> }<br>}</div><div><br></div><div>Compile:</div><div><br></div><div>> javac -cp '.;X3DJSAIL.4.0.jar' CoderSchematron.java # windows</div><div><br></div><div>run!</div><div><br></div><div>> java -cp '.;X3DJSAIL.4.0.jar' CoderSchematron file1.x3d file2.x3d file3.x3d</div><div><br></div><div>Pickup results in file1.x3d.new.schematron.txt file2.x3d.new.schematron.txt file3.x3d.new.schematron.txt</div><div><br></div><div>Great! It's still slow as molasses. Maybe we can try compiled stylesheets?</div><div><br></div><div>Thanks!</div><div><br></div><div>John</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>