Quellen-Resolver während der Vorbereitung verwenden
Wenn Sie während der Vorbereitung eines ausführbaren Objekts einen Quellen-Resolver angeben, können Sie dem Prozessor mitteilen, wie die zu der Zeit referenzierten URIs interpretiert werden sollen.
Vorgehensweise
Damit teilen Sie dem Prozessor mit, wie die zu der Zeit referenzierten URIs interpretiert werden sollen. Verwenden Sie in einem Style-Sheet beispielsweise die Anweisungen xsl:import und xsl:include.
Bei der Quellenauflösung werden bei Verfügbarkeit des Basis-URI standardmäßig die relativen URIs anhand des Basis-URIs des Ausdrucks, der Abfrage oder des Style-Sheets interpretiert. Ist der Basis-URI nicht verfügbar, werden die relativen URIs standardmäßig als relative Pfade bezogen auf das aktuelle Arbeitsverzeichnis interpretiert. Absolute URIs werden unverändert verwendet.
Sie können dieses Verhalten ändern, indem Sie eine Java™-Klasse schreiben, die das Interface XSourceResolver implementiert, und diese im XStaticContext registrieren, bevor Sie das Style-Sheet erstellen.
XFactory factory = XFactory.newInstance();
// Quellen-Resolver im statischen Kontext registrieren
XStaticContext staticContext = factory.newStaticContext();
XSourceResolver sourceResolver=new ASourceResolver(replacementBase);
staticContext.setSourceResolver(sourceResolver);
// Style-Sheet vorbereiten
XSLTExecutable executable = factory.prepareXSLT(new StreamSource(stylesheetFile), staticContext);
XDynamicContext dynamicContext = factory.newDynamicContext();
// Style-Sheet ausführen
XSequenceCursor cursor = executable.execute(new StreamSource(inputFile), dynamicContext);