On onsdag 14 augusti 2024 12:38:08 CEST Martin Honnen wrote: > Consider to provide details on how exactl you use/call Xalan, i.e. > whether from the command line (show the exact command line) or whether > from Java code (show the exact Java code). It also helps showing exactly > which Xalan version you use.
TDLR I got it to work by setting systemId on the xslt source. This got me wondering if the command versions of xalan had the same issue. It is working as it should. Which give me hope. My code is in a state that feel hestitant to share it. In very hard pruning of the code this is the code. //Setup xslt source //Setup xml source //Setup result mTransformerFactory = TransformerFactory.newDefaultInstance(); mTransformer = mTransformerFactory.newTransformer(xsltSource); mTransformer.transform(source, result); I get hold of java.sun bundling of xalan. Warning: iipax.generic.xml.XmlReader: Property 'http://javax.xml.XMLConstants/ property/accessExternalDTD' is not recognized. Warning: iipax.generic.xml.XmlReader: Property 'http://www.oracle.com/xml/ jaxp/properties/entityExpansionLimit' is not recognized. ERROR: 'Kunde inte kompilera formatmall' FATAL ERROR: '/home/johan/git/product/iipax-product/java/common.xsl (No such file or directory)' :/home/johan/git/product/iipax-product/java/common.xsl (No such file or directory) javax.xml.transform.TransformerConfigurationException: /home/johan/git/ product/iipax-product/java/common.xsl (No such file or directory) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java: 1059) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java: 817) at iipax.generic.xml.XsltTransformer.transform(XsltTransformer.java: 176) at iipax.generic.xml.test.XsltTransformerSeTest.testInclude(XsltTransformerSeTest.java: 23) at java.base/ jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/ jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62) at java.base/ jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) 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 org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:90) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java: 69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java: 38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java: 35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java: 232) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55) Caused by: java.io.FileNotFoundException: /home/johan/git/product/iipax- product/java/common.xsl (No such file or directory) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:219) at java.base/java.io.FileInputStream.<init>(FileInputStream.java: 157) at java.base/java.io.FileInputStream.<init>(FileInputStream.java: 112) at java.base/ sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86) at java.base/ sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java: 184) at java.xml/ com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java: 652) at java.xml/ com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java: 150) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 860) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 824) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/ com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1216) at java.xml/ com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 635) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:429) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:514) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Include.parseContents(Include.java: 113) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.parseOwnChildren(Stylesheet.java: 597) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.parseContents(Stylesheet.java: 559) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.createAST(Parser.java: 398) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:496) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:576) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java: 1018) java.io.FileNotFoundException: /home/johan/git/product/iipax-product/java/ common.xsl (No such file or directory) at java.base/java.io.FileInputStream.open0(Native Method) at java.base/java.io.FileInputStream.open(FileInputStream.java:219) at java.base/java.io.FileInputStream.<init>(FileInputStream.java: 157) at java.base/java.io.FileInputStream.<init>(FileInputStream.java: 112) sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:86) at java.base/ sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java: 184) at java.xml/ com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java: 652) at java.xml/ com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java: 150) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 860) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java: 824) at java.xml/ com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/ com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java: 1216) at java.xml/ com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java: 635) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:429) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.parse(Parser.java:514) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Include.parseContents(Include.java: 113) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.parseOwnChildren(Stylesheet.java: 597) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.parseContents(Stylesheet.java: 559) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.Parser.createAST(Parser.java: 398) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:496) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:576) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java: 1018) at java.xml/ com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java: 817) at iipax.generic.xml.XsltTransformer.transform(XsltTransformer.java: 176) iipax.generic.xml.test.XsltTransformerSeTest.testInclude(XsltTransformerSeTest.java: 23) Switching to TransformerFactory.newInstance() results in that the named template isn't found or parsed. SystemId okänt; Rad #8; Kolumn #37; Fick IO-Undantag med stylesheet-fil: common.xsl SystemId okänt; Rad #10; Kolumn #44; org.xml.sax.SAXException: javax.xml.transform.TransformerException: ElemTemplateElement-fel: addSOAP javax.xml.transform.TransformerException: ElemTemplateElement-fel: addSOAP SystemId okänt; Rad #10; Kolumn #44; Hittade inte mallen med namn: addSOAP And after a while (debugging and so on) I figured out that setting systemId to the xsltSource (template Source) it started to work as expected. It started to work with both xalan and the built in java version. xsltSource.setSystemId(template); //The magic that made include work It wasn't and still isn't obvious that you should set systemId on the template Source to get include to work.
top.xsl
Description: top.xsl
common.xsl
Description: common.xsl