I am getting closer, solved some riddles: 1. I had German error messages instead of English ones, as the JDK Xerces has such language bundles (not the Apache Xerces), which confused me at the beginning as Xerces did not have German translations - from my intermediate (unnecessary) changes, I just left the commit to using just one Singletone of a Locale object for Locale.getDefault provided now on constant, see commit <https://github.com/svanteschubert/xerces-j/commit/6a26b9382375032c67a97fe72e7d6193defddc58> . 2. The Xerces JDK parser is taken wrongly, as some test cases are choosing explicitly to validate in XSD 1.0 mode (e.g. see ConditionalInclusionTests <https://github.com/svanteschubert/xerces-j/blob/maven-prototype/src/test/java/org/apache/xerces/tests/ConditionalInclusionTests.java#L76>), unfortunately, only for XSD 1.1 mode a factory was explicitly being given: System.setProperty("javax.xml.validation.SchemaFactory:" + SCHEMA_11_LANGUAGE, SCHEMA_11_FACTORY); no factory was given for XSD 1.0, but was now added: System.setProperty("javax.xml.validation.SchemaFactory:" + SCHEMA_10_LANGUAGE, SCHEMA_10_FACTORY); After setting the above System property in the parent test class the Apache Xerces was being taken. *I would suggest setting both properties during loading Xerces! * Making Xerces the default when loading it, avoiding such problems for others. 3. In the pom.xml <https://github.com/svanteschubert/xerces-j/blob/maven-prototype/pom.xml#L39>, I suggest using the first JDK LTS release after JDK's module refactoring, which is JDK 11. However I had problems with our PsychoPathXPathProcessor (XPath 2.0 engine), which appeared as security exceptions, so I updated the version - to the only version where sources are findable <https://mvnrepository.com/artifact/com.rackspace.eclipse.webtools.sourceediting/org.eclipse.wst.xml.xpath2.processor> . PsychoPathXPathProcessor home at Eclipse looked abandoned. <https://wiki.eclipse.org/PsychoPathXPathProcessor/> Sources can not be viewed at Eclipse. *Perhaps someone has more knowledge and/or connection and can provide a link?* The downside of the version upgrade from version 1.2.1 to 2.1.100, there are some build issues due to API changes, on the bright side all JARs are on Maven Central: Calling on project root '*mvn dependency:tree -Dverbose*' shows: INFO] --- dependency:3.7.1:tree (default-cli) @ xercesImpl --- [INFO] xerces:xercesImpl:jar:2.12.3-SNAPSHOT [INFO] +- xml-apis:xml-apis:jar:1.4.01:compile [INFO] +- xml-resolver:xml-resolver:jar:1.2:compile [INFO] +- com.rackspace.eclipse.webtools.sourceediting :org.eclipse.wst.xml.xpath2.processor:jar:2.1.100:compile [INFO] | +- edu.princeton.cup:java-cup:jar:10k:compile [INFO] | \- com.ibm.icu:icu4j:jar:4.6:compile [INFO] \- junit:junit:jar:4.13.2:test [INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test No more JARs have to be bundled if this is working out! 🥳
Hope you are enjoying your Friday! Svante On Fri, 13 Sept 2024 at 02:33, Svante Schubert <svante.schub...@gmail.com> wrote: > Getting tired, just a quick correction: > > 1. Copied the tests of the "xml-schema-1.1-tests" git branch from > "src" to "*src/test/java*" in the "xml-schema-1.1-dev" branch > 2. Copied the test files of the "xml-schema-1.1-tests" git branch > from "data" to "*src/test/resources*" in the "xml-schema-1.1-dev" > branch > > > On Fri, 13 Sept 2024 at 02:28, Svante Schubert <svanteschub...@apache.org> > wrote: > >> Dear Xerces-J users, >> >> I enabled a prototype of Maven for Xerces-j on top of the >> "xml-schema-1.1-dev" Git branch to build and test with Netbeans - any IDE >> supporting Maven, see >> https://github.com/svanteschubert/xerces-j/tree/maven-prototype >> >> Aimed to change as little as possible at the beginning: >> >> 1. Moved all Java files of the "src" directory to "src/main/java" >> 2. Moved all *.properties files of the "src" directory to >> "src/main/resources" >> 3. Copied the tests of the "xml-schema-1.1-tests" git branch from >> "src" to "src/main/test" in the "xml-schema-1.1-dev" branch >> 4. Copied the test files of the "xml-schema-1.1-tests" git branch >> from "data" to "src/main/resources" in the "xml-schema-1.1-dev" branch >> 5. The pom.xml was initialized from >> >> https://repo1.maven.org/maven2/xerces/xercesImpl/2.12.2/xercesImpl-2.12.2.pom >> 6. Afterwards, the pom.xml was enriched from the pom.xml of the >> former Apache Incubator project ODF Toolkit/ODFDOM >> 7. The .github directory was overtaken/adapted from the former Apache >> Incubator project ODF Toolkit/ODFDOM >> 8. Some JARs are yet not on Maven and were still reused locally from >> the tools directory >> >> By this with every commit regression testing is triggered on GitHub, so >> you might far easier see and reproduce my problem: >> >> https://github.com/svanteschubert/xerces-j/actions/runs/10840565076/job/30083097656#step:4:554 >> >> Likely the root problem is that the correct SchemaFactory is not found >> and the JDK 8 internal Xerces is being taken. >> Does anybody know the fix? Likely it is a common problem... >> >> I will discuss the challenges of the Maven build in the next few days on >> the dev list...no need to continue, if nobody is interested... >> >> Greetings from Germany, >> Svante >> >> On Thu, 12 Sept 2024 at 18:45, Svante Schubert <svanteschub...@apache.org> >> wrote: >> >>> Can anyone please provide feedback if it can be produced that the >>> AllXercesXSD11Tests >>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/src/org/apache/xerces/tests/AllXercesXSD11Tests.java> >>> are failing? >>> >>> 1. for the downloaded Xerces 1.1 version >>> >>> <https://dlcdn.apache.org//xerces/j/binaries/Xerces-J-bin.2.12.2-xml-schema-1.1.zip> >>> ? >>> 2. for the Xerces 1.1 dev GitHub branch? >>> 3. that the earlier-mentioned test should fail as it did due to the >>> duplicated named global element declaration? >>> Sorry, but I did earlier a shell-game trick to myself and added not >>> an official Xerces1.1.jar but my previous AllXercesXSD11Tests >>> >>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/src/org/apache/xerces/tests/AllXercesXSD11Tests.java> >>> only >>> failed correctly in my local test branch, where I added prefix support >>> for >>> the loaded XSDs at run-time...still, tests fail for the official Xerces >>> 1.1 >>> release. >>> >>> I tested now two different official Xerces 1.1 versions (and added >>> Netbeans IDE build environment to two commits of my prototype branch >>> smoke-testing) >>> >>> 1. a Netbeans environment using the downloaded Xerces 1.1 version >>> >>> <https://github.com/apache/xerces-j/commit/1930cbe2ec1a4d5e4df4a685c60b66a86745e285> >>> 2. a Netbeans environment using the Xerces 1.1 dev GitHub branch >>> >>> <https://github.com/apache/xerces-j/commit/57dcf82032d874c9bed5851349635e7c0a1131f1> >>> >>> Netbeans build and debug environment is easily addable for the >>> xml-schema-1.1-tests GitHub branch of Xerces by creating a new >>> Netbeans project and >>> >>> - In case Netbeans debug support for downloaded Xerces 1.1 ZIP >>> >>> <https://dlcdn.apache.org//xerces/j/binaries/Xerces-J-bin.2.12.2-xml-schema-1.1.zip> >>> : >>> Add all JARs from the downloaded ZIP of Xerces 1.1 to the classpath >>> - switch to JDK 8 (as afterwards JDKs API changed, e.g. tools.jar not >>> available) >>> >>> >>> - In case Netbeans debug support for Github branch >>> xml-schema-1.1-dev: >>> Checkout from Github the xml-schema-1.1-dev branch and add in >>> Netbeans src and sample as source directories, use JDK 8 and add the JARs >>> from the tools directory (aside from XercesImp.jar), which will be built. >>> Afterwards, add the newly created Xerces JAR and the previously >>> added JARs to your other xml-schema-1.1-tests Netbeans project. >>> JUnit and Hamcrest will be added by Netbeans automatically >>> when problems are resolved >>> >>> Quite cumbersome, I think it's about time to add Maven support... :-) >>> >>> Two questions in the end regarding the current GitHub branch structure: >>> >>> 1. Why is the xml-schema-1.1-dev GitHub branch not placed at the top >>> of the main branch? XSD 1.1 specs states to be backward compatible with >>> XSD >>> 1.0. >>> 2. Why are the tests of the xml-schema-1.1-tests GitHub branch not >>> added as well to the main branch? >>> 3. In case a Maven to build (and test) is being added, regression >>> tests could be made on GitHub for every commit to keep the branches from >>> becoming red. >>> >>> Currently, there are multiple versions of sources for Xerces >>> The different Xerces sources able to be downloaded as ZIP and the >>> differences between Subversion and the GitHub branches make it complex for >>> newcomers. >>> Is there still a reason that prevents these minimize the amount of >>> Xerces sources, I suggest the main branch of GitHub as the latest and >>> greatest source, using Git labels for releases. >>> >>> Thanks for any feedback, >>> Svante >>> >>> >>> On Thu, 12 Sept 2024 at 13:58, Svante Schubert < >>> svante.schub...@gmail.com> wrote: >>> >>>> PS: >>>> To ease reproduction, I have added a stack trace (below) - note below >>>> is just the German-translated version of the error message mentioned >>>> earlier: >>>> "*sch-props-correct.2: An XSD schema cannot contain two global >>>> components with the same name.*" >>>> and the SaxParseException is already thrown when creating the Schema, >>>> even before the test: >>>> >>>> https://github.com/svanteschubert/xerces-j/blob/smoke-testing/src/org/apache/xerces/tests/ConditionalInclusionTests.java#L81 >>>> >>>> org.xml.sax.SAXParseException; systemId: >>>> file:///E:/dev/tausch/xml/xsd-debug/xml-schema-1.1-tests/data/version-control/test37.xsd; >>>> lineNumber: 7; columnNumber: 46; >>>> *sch-props-correct.2: Ein Schema kann nicht zwei globale Komponenten >>>> mit demselben Namen enthalten. Dieses Schema enth�lt zwei Vorkommen von >>>> ',test'.* >>>> at >>>> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204) >>>> at >>>> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4204) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4187) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.checkForDuplicateNames(XSDHandler.java:3820) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.buildGlobalNameRegistries(XSDHandler.java:1362) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:651) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:610) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:569) >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:535) >>>> at >>>> com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:269) >>>> at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:638) >>>> * at >>>> org.apache.xerces.tests.ConditionalInclusionTests.testVersionControl3(ConditionalInclusionTests.java:81) >>>> <https://github.com/svanteschubert/xerces-j/blob/smoke-testing/src/org/apache/xerces/tests/ConditionalInclusionTests.java#L81>* >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >>>> at >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>> at junit.framework.TestCase.runTest(TestCase.java:177) >>>> at junit.framework.TestCase.runBare(TestCase.java:142) >>>> at junit.framework.TestResult$1.protect(TestResult.java:122) >>>> at junit.framework.TestResult.runProtected(TestResult.java:142) >>>> at junit.framework.TestResult.run(TestResult.java:125) >>>> at junit.framework.TestCase.run(TestCase.java:130) >>>> at junit.framework.TestSuite.runTest(TestSuite.java:241) >>>> at junit.framework.TestSuite.run(TestSuite.java:236) >>>> at junit.framework.TestSuite.runTest(TestSuite.java:241) >>>> at junit.framework.TestSuite.run(TestSuite.java:236) >>>> at >>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:535) >>>> at >>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1197) >>>> at >>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:1042) >>>> >>>> On Thu, 12 Sept 2024 at 08:24, Svante Schubert < >>>> svanteschub...@apache.org> wrote: >>>> >>>>> Dear Xerces user group, >>>>> >>>>> Let me add the specification reference to the invalidness of the test >>>>> file >>>>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/data/version-control/test37.xsd#L5> >>>>> : https://www.w3.org/TR/xmlschema11-1/#concepts-nameSymbolSpaces >>>>> *"But it is not possible for ... two distinct top-level element >>>>> declarations, to share the name my:abc"* >>>>> >>>>> If the build were in Maven and nightly tests were run by GitHub, I >>>>> would not ask this question. Perhaps it is worth considering a switch from >>>>> Ant to Maven? >>>>> In general, invalid test files should be explicitly marked as such >>>>> like within a subfolder 'invalid'. >>>>> Would be helpful to download groups of test files from Maven, like >>>>> versions of deliverables as well (but this might be a topic for Maven's >>>>> user's list)... >>>>> >>>>> Still, I believe I am doing an oversight... >>>>> >>>>> Best regards, >>>>> Svante >>>>> >>>>> PS: Used my Apache email now and am uncertain if I should have started >>>>> on the dev list right away instead of users - I would join these lists for >>>>> software in general... (as you want to users become developers..) >>>>> >>>>> On Wed, 11 Sept 2024 at 15:25, Svante Schubert < >>>>> svante.schub...@gmail.com> wrote: >>>>> >>>>>> Dear experts, >>>>>> >>>>>> I am in need of some advice using the new Xerces xml-schema-1.1-tests >>>>>> <https://github.com/apache/xerces-j/tree/xml-schema-1.1-tests>. >>>>>> >>>>>> The test suite of org.apache.xerces.tests.AllXercesXSD11Tests >>>>>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/src/org/apache/xerces/tests/AllXercesXSD11Tests.java#L31> >>>>>> fails for me using my Xerces Jar from a build of Xerces 1.1 GitHub >>>>>> branch <https://github.com/apache/xerces-j/tree/xml-schema-1.1-dev> >>>>>> and likely I am missing something obvious. >>>>>> The error given is "*sch-props-correct.2: An XSD schema cannot >>>>>> contain two global components with the same name.*" and *the test >>>>>> file does have two global element name declarations with the same name* >>>>>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/data/version-control/test37.xsd#L5>, >>>>>> still the test is not meant to fail. >>>>>> >>>>>> What did I miss? >>>>>> >>>>>> My steps to do my smoke testing: >>>>>> >>>>>> 1. As I am not able to easily build & debug with my IDEs (like >>>>>> with Maven) using the existing ANT scripts, I generated an easy build >>>>>> & >>>>>> debug environment for my set of IDEs (Apache Netbeans & Intellij IDEA) >>>>>> represented by a single commit of noise >>>>>> >>>>>> <https://github.com/svanteschubert/xerces-j/commit/7e32264aabbb366360d6a354d2589e1e154fb58f> >>>>>> . >>>>>> 2. Instead of setting an environment variable, I hard coded the >>>>>> path to my tests >>>>>> >>>>>> <https://github.com/svanteschubert/xerces-j/commit/2c50b9c6dc88c5394af95d12f6cad9cced822e9e> >>>>>> . >>>>>> 3. Executed in Netbeans test suite >>>>>> org.apache.xerces.tests.AllXercesXSD11Tests >>>>>> >>>>>> <https://github.com/apache/xerces-j/blob/xml-schema-1.1-tests/src/org/apache/xerces/tests/AllXercesXSD11Tests.java#L31> >>>>>> and >>>>>> getting aside of the above so many errors that I must have done >>>>>> something >>>>>> basic wrong. >>>>>> >>>>>> Thanks for any help! >>>>>> Svante >>>>>> >>>>>