Ich habe ein Java Maven-Projekt, das XSLT-Transformationen enthält. Ich lade das Stylesheet wie folgt:Umwandlung fehlgeschlagen wegen xsl: include
TransformerFactory tFactory = TransformerFactory.newInstance();
DocumentBuilderFactory dFactory = DocumentBuilderFactory
.newInstance();
dFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
ClassLoader cl = this.getClass().getClassLoader();
java.io.InputStream in = cl.getResourceAsStream("xsl/stylesheet.xsl");
InputSource xslInputSource = new InputSource(in);
Document xslDoc = dBuilder.parse(xslInputSource);
DOMSource xslDomSource = new DOMSource(xslDoc);
Transformer transformer = tFactory.newTransformer(xslDomSource);
Die stylesheet.xsl hat eine Reihe von Anweisungen. Diese scheinen, Probleme zu verursachen, wenn ich versuche, meine Unit-Tests zu laufen bekomme ich folgende Fehler:
C:\Code\workspace\app\dummy.xsl; Line #0; Column #0; Had IO Exception with stylesheet file: footer.xsl
C:\Code\workspace\app\dummy.xsl; Line #0; Column #0; Had IO Exception with stylesheet file: topbar.xsl
Die include-Anweisungen in der XSLT sind relative Links
xsl:include href="footer.xsl"
xsl:include href="topbar.xsl"
ich versucht habe, zu experimentieren und zu ändern diese zu den folgenden - aber ich bekomme immer noch den Fehler.
xsl:include href="xsl/footer.xsl"
xsl:include href="xsl/topbar.xsl"
Irgendwelche Ideen? Jede Hilfe wird sehr geschätzt.
Vergessen Sie nicht, 'documentBuilderFactory.setNamespaceAware (true)' zu setzen. Andernfalls kann das übergeordnete Stylesheet verhindern, dass die Vorlage in Ihrem untergeordneten Stylesheet geladen wird, was zu ElemTemplateElement-Fehlern führt. –
Achtung, setURIResolver kann auch auf den Transformator gesetzt werden (d. H. Statt auf die Fabrik), hat aber keine Wirkung. – robert