2011-01-17 5 views
5

Ich habe eine einfache Webanwendung unter websphere5. Unter appDir\WEB-INF\classes\ habe ich diese Dateien:XSL-Import, der FileNotFoundException in der Webanwendung verursacht

  • main.xslt
  • templates.xslt

main.xslt enthält die Anweisung

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

aber die Anwendung schlägt fehl, wenn main.xslt in Java-Code verwendet wird. Wie soll ich den Pfad zu importierten XSL-Dateien angeben, wenn sich alle im selben Ordner befinden()?

Text von Ausnahmen:

java.io.FileNotFoundException: d: \ Programme \ WebSphere \ AppServer1 \ templates.xsl (. Das System kann die angegebene Datei nicht finden kann, )

Antwort

3

Sie müssen einen benutzerdefinierten URI-Resolver bereitstellen, um die Includes zu verarbeiten. In einer Webanwendung kann nicht garantiert werden, dass auf ein Dateisystem zugegriffen werden kann, da Ihnen die WAR-Datei möglicherweise nicht mehr zur Verfügung steht. Werfen Sie einen Blick auf die javax.xml.transform.URIResolver Schnittstelle und Transformer.setURIResolver()

+2

Korrekte, aber allgemeine Antwort, fehlende Erklärung: Die relative URL für die Deklaration 'xsl: import' wird mit Stylesheet-URI als Basis-URI aufgelöst. Ob der XSLT-Prozessor mit diesem URI-Schema umgehen kann oder ob er über Rechte verfügt, ist ein weiteres Problem. From: http://www.w3.org/TR/xslt#import * Das 'xsl: import'-Element hat ein 'href'-Attribut, dessen Wert eine URI-Referenz ist, die das Stylesheet identifiziert, das importiert werden soll. Ein relativer URI wird relativ zum Basis-URI des Elements 'xsl: import' aufgelöst * –

Verwandte Themen