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.

Attachment: top.xsl
Description: top.xsl

Attachment: common.xsl
Description: common.xsl

Reply via email to