2011-01-17 9 views
5

Tengo una aplicación web simple en websphere5. Bajo appDir\WEB-INF\classes\ tengo estos archivos:Importación de XSL que causa FileNotFoundException en la aplicación web

  • main.xslt
  • templates.xslt

main.xslt contiene la instrucción

<xsl:import href="templates.xsl" /> 

pero la aplicación falla cuando main.xslt se utiliza en código Java. ¿Cómo debo especificar la ruta a los archivos XSL importados si todos están en la misma carpeta (WEB-INF\classes\)?

texto de excepción:

java.io.FileNotFoundException: d: \ Archivos de programa \ WebSphere \ AppServer1 \ templates.xsl (. El sistema no puede encontrar el archivo especificado )

Respuesta

3

Debe proporcionar un uri-resolver personalizado para procesar los includes. En una aplicación web, no hay garantía de que se pueda acceder a un sistema de archivos, ya que podría quedarse sin un archivo WAR. Echar un vistazo a la interfaz javax.xml.transform.URIResolver y Transformer.setURIResolver()

+2

Respuesta correcta pero general, explicación faltante: la uri relativa para la declaración 'xsl: import' se resolverá con el URI de la hoja de estilo como URI base. Si el procesador XSLT puede manejar ese esquema de URI o si tiene los privilegios correctos, es otro problema. From: http://www.w3.org/TR/xslt#import * El elemento 'xsl: import' tiene un atributo' href' cuyo valor es una referencia de URI que identifica la hoja de estilo que se va a importar. Un URI relativo se resuelve en relación con el URI base del elemento 'xsl: import' * –

Cuestiones relacionadas