Utilización de un solucionador de resultados en el tiempo de ejecución

Especificando un solucionador de resultados en el tiempo de ejecución, puede indicar al procesador cómo redirigir los URI de salida especificados en el ejecutable.

Procedimiento

Para activar un solucionador de resultados, regístrelo con el contexto dinámico antes de invocar a execute().

Los solucionadores de resultados llevan a cabo esencialmente la misma función que los solucionadores de origen, pero en la parte de la salida del procesador. Le permiten interceptar y redirigir los URI de salida especificados en el ejecutable, como por ejemplo las directrices xsl:result-document en una hoja de estilo.

El comportamiento de resolución predeterminado es utilizar el URI de salida de base para resolver documentos de resultado si la referencia al URI es relativa. Los URI absolutos se utilizan sin modificar.

A continuación encontrará un ejemplo básico de un solucionador de resultados.
class AResultResolver implements XResultResolver
{
    String _replacementBase;
    
    public AResultResolver(String replacementBase)
    {
    		_replacementBase=replacementBase;
    }
    
    // Resolve URIs by loading the resource as an XSLT stylesheet
    // and evaluating it - return the result as the Source to use
    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 {
      			// Get base URI object
    	   		baseURI = new java.net.URI(base);
        		// Resolved relative reference against base URI
        				URI resolvedURI = baseURI.resolve(href);
        		// Try to read...
        				result = new StreamResult(resolvedURI.toString());
    		} catch (java.net.URISyntaxException use) {
    		   	throw new RuntimeException(use);
			  }

    		return result;
    }
}  
A continuación encontrará un ejemplo básico de cómo registrar y utilizar el solucionador.
XFactory factory = XFactory.newInstance();

XStaticContext staticContext = factory.newStaticContext();

// Prepare the stylesheet
XSLTExecutable executable = factory.prepareXSLT(new StreamSource(stylesheetFile), staticContext);

XDynamicContext dynamicContext = factory.newDynamicContext();
// Register the result resolver with the dynamic context
XResultResolver resultResolver=new AResultResolver(replacementBase);
dynamicContext.setResultResolver(resultResolver);

// Execute the XPath expression
XSequenceCursor cursor = executable.execute(new StreamSource(inputFile), dynamicContext);

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_resolvers_result_exec
File name: txml_resolvers_result_exec.html