Quellen-Resolver während der Ausführung verwenden
Wenn Sie während der Ausführung 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, z. B. in Aufrufen der Funktion fn:doc() oder document().
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 XDynamicContext registrieren, bevor Sie den Ausdruck, die Abfrage oder das Style-Sheet ausführen.
XFactory factory = XFactory.newInstance();
XStaticContext staticContext = factory.newStaticContext();
// Style-Sheet vorbereiten
XSLTExecutable executable = factory.prepareXSLT(new StreamSource(stylesheetFile), staticContext);
XDynamicContext dynamicContext = factory.newDynamicContext();
// Quellen-Resolver im dynamischen Kontext registrieren
XSourceResolver sourceResolver=new ASourceResolver(replacementBase);
dynamicContext.setSourceResolver(sourceResolver);
// XPath-Ausdruck ausführen
XSequenceCursor cursor = executable.execute(new StreamSource(inputFile), dynamicContext);