Tengo un proyecto Java maven que incluye transformaciones XSLT. Me carga la hoja de estilo de la siguiente manera:Error de transformación debido a 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);
El stylesheet.xsl tiene una serie de declaraciones. Estos parecen ser la causa de problemas, cuando trato de ejecutar mis pruebas de unidad consigo los siguientes errores:
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
El incluyen declaraciones en el XSLT son enlaces relativos
xsl:include href="footer.xsl"
xsl:include href="topbar.xsl"
he intentado experimentar y cambiar estos a lo siguiente - pero aún así obtengo el error.
xsl:include href="xsl/footer.xsl"
xsl:include href="xsl/topbar.xsl"
¿Alguna idea? Cualquier ayuda muy apreciada.
No olvides establecer 'documentBuilderFactory.setNamespaceAware (true)'. Si no lo hace, puede evitar que la hoja de estilo primaria cargue cualquier plantilla en la hoja de estilos secundaria, lo que da como resultado errores ElemTemplateElement. –
Tenga cuidado, setURIResolver también se puede configurar en el transformador (es decir, en lugar de la fábrica), pero no tiene efecto entonces. – robert