Closed angelaszek closed 3 years ago
You reading CDA.xsl from a different directory than you are reading cda/cda_l10n.xml from. They are normally in the same place. Could it be that you need to read both from the same path?
There was a mistake in the previous comment. I updated it. I have CDA.xsl and cda_l10n.xml in the same directory and I still get that error.
Using Java 15 and the code from stackoverflow I got a more meaningful NPE, that may or may not be like yours. I could not use your code because I didn't know what FileUtils is. You should not need to specify the l10n file unless you aim to override it.
My code:
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public class RunXsl {
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("cda-core-xsl/CDA.xsl"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new File("examples/cda.xml"));
transformer.transform(text, new StreamResult(new File("examples/cda.html")));
}
}
My output:
Exception in thread "main" javax.xml.transform.TransformerException: java.lang.NullPointerException: Cannot invoke "String.length()" because "to" is null
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:797)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:383)
at RunXsl.main(RunXsl.java:17)
Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "to" is null
at java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.translateF(BasisLibrary.java:359)
at jdk.translet/die.verwandlung.CDA.caseDown()
at jdk.translet/die.verwandlung.CDA.topLevel()
at jdk.translet/die.verwandlung.CDA.transform()
at java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:624)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:790)
... 2 more
---------
java.lang.NullPointerException: Cannot invoke "String.length()" because "to" is null
at java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.translateF(BasisLibrary.java:359)
at jdk.translet/die.verwandlung.CDA.caseDown()
at jdk.translet/die.verwandlung.CDA.topLevel()
at jdk.translet/die.verwandlung.CDA.transform()
at java.xml/com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:624)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:790)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:383)
at RunXsl.main(RunXsl.java:17)
I can try to see why the function translate() is misbehaving. BasisLibrary.translateF
is about that function, but I'm not sure it would fix your issue per se.
I've fixed the NPE I had with Xalan. Let me know if that helps you as well @angelaszek
Thank you for your help. This did fix the problem I was having as well.
Hello,
I was trying to use the CDA.xsl file but I encounter the following NPE. I didn't have much luck trying to resolve it. Does anyone have any experience resolving this?
Here is some example code I was using.