Ergebnis-Resolver während der Ausführung verwenden

Wenn Sie in der Ausführungszeit einen Ergebnis-Resolver angeben, können Sie dem Prozessor mitteilen, wie im ausführbaren Objekt angegebene Ausgabe-URIs umgeleitet werden sollen.

Vorgehensweise

Registrieren Sie den Ergebnis-Resolver im dynamischen Kontext, bevor Sie execute() aufrufen, um den Resolver zu aktivieren.

Ergebnis-Resolver führen im Wesentlichen die gleiche Funktion wie Quellen-Resolver aus, allerdings auf der Ausgabeseite des Prozessors. Mit Ergebnis-Resolvern können Sie im ausführbaren Objekt angegebene Ausgabe-URIs abfangen und umleiten, z. B. die Anweisungen xsl:result-document in einem Style-Sheet.

Standardmäßig werden Ergebnisdokumente unter Verwendung des Basisausgabe-URI aufgelöst, wenn die URI-Referenz relativ ist. Absolute URIs werden unverändert verwendet.

Das folgende Basisbeispiel zeigt einen Ergebnis-Resolver.
class AResultResolver implements XResultResolver
{
    String _replacementBase;
    
    public AResultResolver(String replacementBase)
    {
    		_replacementBase=replacementBase;
    }
    
    // Ressource als XSLT-Style-Sheet laden und auswerten, um URIs
    // aufzulösen. Ergebnis als zu verwendende Quelle zurückgeben.
    public Result getResult(String href, String base) {
    				String rebasePrefix="rebase://";
    
    				if(href.startsWith(rebasePrefix))
    		{
    			href=href.substring(rebasePrefix.length());
    			base=_replacementBase;
    		}

    		java.net.URI baseURI;
    				Result result=null;
    		try  { 
      			// Basis-URI-Objekt abrufen
    	   		baseURI = new java.net.URI(base);
        		// Relativer Bezug zum Basis-URI aufgelöst
        				URI resolvedURI = baseURI.resolve(href);
        		// Leseversuch...
        				result = new StreamResult(resolvedURI.toString());
    		} catch (java.net.URISyntaxException use) {
    		   	throw new RuntimeException(use);
			  }

    		return result;
    }
}  
Das folgende Basisbeispiel zeigt die Registrierung und Verwendung des Resolvers.
XFactory factory = XFactory.newInstance();

XStaticContext staticContext = factory.newStaticContext();

// Style-Sheet vorbereiten
XSLTExecutable executable = factory.prepareXSLT(new StreamSource(stylesheetFile), staticContext);

XDynamicContext dynamicContext = factory.newDynamicContext();
// Ergebnis-Resolver im dynamischen Kontext registrieren
XResultResolver resultResolver=new AResultResolver(replacementBase);
dynamicContext.setResultResolver(resultResolver);

// XPath-Ausdruck ausführen
XSequenceCursor cursor = executable.execute(new StreamSource(inputFile), dynamicContext);

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_resolvers_result_exec
Dateiname:txml_resolvers_result_exec.html