diff --git a/build.xml b/build.xml
index 131026cc6ba7ccddfd0aa565749f95b2d6833077..03e3bf672513f9dfc7271cfff897d5383bf0cc58 100644
--- a/build.xml
+++ b/build.xml
@@ -294,8 +294,9 @@ POSSIBILITY OF SUCH DAMAGE.
     <property name="CreateContentCatalog.dir" location="../../../tools/CreateContentCatalog"/>
     <property name="X3dDtdsSchemas.dir"       location="../../../../specifications"/>
     <property name="resolver.dir"             location="${env.ANT_HOME}/lib"/>
-    <!-- https:///xerces.apache.org/mirrors.cgi XML Commons Resolver Version 1.2 - zip -->
-    <length property="resolver.jar.length" file="${resolver.dir}/resolver.jar"/>
+    <property name="resolver.jar"             value="xml-resolver-1.2.jar"/>
+    <length property="resolver.jar.length" file="${resolver.dir}/${resolver.jar}"/>
+    <!-- original alternative to ant: https:///xerces.apache.org/mirrors.cgi XML Commons Resolver Version 1.2 - zip -->
 
 <!--
 OASIS XML Catalog standard references
@@ -310,7 +311,7 @@ Apache Ant validation and resolver references
          https:///xerces.apache.org/xerces-j/features.html
          https:///xerces.apache.org/xerces-j/properties.html
 Key references:
-         https:///xml.apache.org/commons/components/resolver (then see resolver.jar)
+         https:///xml.apache.org/commons/components/resolver (then see ${resolver.jar})
          https:///xerces.apache.org/xml-commons
          https:///www.apache.org/dist/xerces/xml-commons
 -->
@@ -332,7 +333,7 @@ Key references:
         <!-- Transitional DTD, versions 3.0 and 3.1 only -->
         <dtd    publicId="file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd" location="${X3dDtdsSchemas.dir}/x3d-3.0.dtd"/>
         <dtd    publicId="file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.1.dtd" location="${X3dDtdsSchemas.dir}/x3d-3.1.dtd"/>
-        <!-- fallback solution, depends on resolver.jar availability -->
+        <!-- fallback solution, depends on ${resolver.jar} availability -->
         <xmlcatalog>
             <catalogpath location="${X3dDtdsSchemas.dir}/${xml.catalog.file}" description="external path to same definitions"/>
         </xmlcatalog>
@@ -359,7 +360,7 @@ Key references:
 			<echo message="... -expand:'@{expand}' parameterPair1='@{parameterPair1}' parameterPair2='@{parameterPair2}' parameterPair3='@{parameterPair3}'"/>
             -->
 			<java classname="net.sf.saxon.Transform"
-				  classpath="${saxon.dir}/${saxon.jar};${resolver.dir}/resolver.jar"
+				  classpath="${saxon.dir}/${saxon.jar};${resolver.dir}/${resolver.jar}"
 				  fork="${fork}"
 				  failonerror="false">
 				<!-- TODO
@@ -372,8 +373,8 @@ Key references:
 				https://www.saxonica.com/html/documentation/sourcedocs/xml-catalogs.html
 				"How to use a catalog file:  Using catalogs with Saxon"
 				https://www.sagehill.net/docbookxsl/UseCatalog.html
-				download resolver.jar from https://www.apache.org/dist/xerces/xml-commons (formerly https://xml.apache.org/commons/dist)
-				unzip package and install resolver.jar into classpath above,
+				download ${resolver.jar} from https://www.apache.org/dist/xerces/xml-commons (formerly https://xml.apache.org/commons/dist)
+				unzip package and install ${resolver.jar} into classpath above,
 				must also have CatalogManager.properties in CLASSPATH
 				<arg value="-r:org.apache.xml.resolver.tools.CatalogResolver"/>
 				<arg value="-x:org.apache.xml.resolver.tools.ResolvingXMLReader"/>
@@ -497,7 +498,7 @@ Key references:
 
     <target name="saxon.help" description="display command-line settings">
         <java classname="net.sf.saxon.Transform"
-              classpath="${saxon.dir}/${saxon.jar};${resolver.dir}/resolver.jar"
+              classpath="${saxon.dir}/${saxon.jar};${resolver.dir}/${resolver.jar}"
               fork="${fork}"
               failonerror="false">
             <arg value="-?"/>
@@ -1362,7 +1363,7 @@ ignoreSetupDownloadErrors=true
         <echo message="               X3dDtdsSchemas.dir=${X3dDtdsSchemas.dir}"/>
         <echo message="        ignoreSetupDownloadErrors=${ignoreSetupDownloadErrors}"/>
         <echo message="   saxon path: ${saxon.dir}/${saxon.jar}"/>
-   <!-- TODO <echo message="resolver path: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/> -->
+   <!-- TODO <echo message="resolver path: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/> -->
 
         <!-- make library directories for supporting jar files -->
         <mkdir  dir="jenkins/lib"/>
@@ -1495,7 +1496,7 @@ ignoreSetupDownloadErrors=true
     </target>
 
     <target name="commonSetup" depends="HelloWorld,newScene" description="Copy setup files from common example archives">
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <!-- each specific example archive redirects to X3dResources.html (formerly help.html) in parent examples directory due to other relative links there -->
         <get src="${x3d.sourceforge.site}/x3d/content/examples/_help.redirect.html?format=raw"
                                                           dest="help.html"                    verbose="true" ignoreerrors="${ignoreSetupDownloadErrors}"/>
@@ -1988,7 +1989,7 @@ ignoreSetupDownloadErrors=true
         depends="clean.duplicates">
         <!-- XML well-formed checks -->
         <echo message="XML well-formed check: ${archive.name} build.xml and scenes"/>
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <xmlvalidate failonerror="false" warn="true" lenient="true" file="build.xml"/>
         <echo message="X3D DTDs and schemas available at https://www.web3d.org/specifications"/>
         <echo message="check well-formedness of X3D scenes"/>
@@ -3356,7 +3357,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
 
     <target name="processScenes.canonicalX3D" description="generate canonical X3D form" depends="clean.duplicates">
         <!-- TODO:  XMLUnit test comparing Filename.x3d to FilenameCanonical.xml -->
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <for param="file.path.name">
             <path>
                 <fileset refid="x3dScenes"/>
@@ -3837,7 +3838,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
 
     <target name="processScenes.X3dTidy" description="Apply X3dTidy.xslt to clean up X3D scene errors (when .x3d is more recent than .html)" depends="clean.X3dTidy,clean.duplicates">
         <echo message="Apply X3dTidy.xslt to clean up X3D scene errors (when .x3d is more recent than .html)"/>
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <for param="file.path.name">
             <path>
                 <fileset refid="x3dScenes"/>
@@ -4088,7 +4089,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
 
     <target name="processScenes.X3DJSAIL.DomLoaderTests" description="test DOM-based scene loading by X3DJSAIL.X3DLoader" depends="">
         <echo message="test DOM-based scene loading by X3DJSAIL.X3DLoader"/>
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <for param="file.path.name">
             <path>
                 <fileset refid="x3dScenes"/>
@@ -4134,7 +4135,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
 
     <target name="processScenes.java" description="generate java source, .class files, javadoc" depends="clean.RoundTrip">
 	<mkdir  dir="${java.classes.dir}"/>
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <for param="file.path.name">
             <path>
                 <fileset refid="x3dScenes"/>
@@ -4321,7 +4322,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
         <echo message="$pyjnius.X3DautoclassPath =${pyjnius.X3DautoclassPath}"/>
         <echo message="$pyjnius.configurationPath=${pyjnius.configurationPath}"/>
         -->
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
         <echo message="====================="/>
         <for param="file.path.name">
             <path>
@@ -4413,7 +4414,7 @@ app.replica.args=-mode scene -mipmaps -antialias 8 -anisotropicDegree 16 -verbos
     </target>
 
     <target name="processScenes.turtle" description="generate turtle source, run validation test" depends="">
-        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/resolver.jar (${resolver.jar.length} bytes)"/>
+        <echo message="Verifying Apache Ant XML Catalog resolver classpath: ${resolver.dir}/${resolver.jar} (${resolver.jar.length} bytes)"/>
 	<echo message="==================================="/>
         <for param="file.path.name">
             <path>