Utilisation d'un programme de résolution de résultat pendant l'exécution

Si vous indiquez un programme de résolution de résultat pendant l'exécution, vous pouvez indiquer au processeur comment rediriger les URI de sortie spécifiés dans l'exécutable.

Procédure

Pour activer un programme de résolution de résultat, enregistrez-le dans le contexte dynamique avant d'appeler la méthode execute().

Les programmes de résolution de résultat remplissent essentiellement la même fonction que les programmes de résolution de source, mais du côté sortie du processeur. Ils vous permettent d'intercepter et de rediriger les URI spécifiés dans l'exécutable, par exemple les directives xsl:result-document contenues dans une feuille de style.

Le comportement par défaut pour la résolution est d'utiliser l'URI de sortie de base pour résoudre les documents de résultat si la référence d'URI est relative. Les URI absolus sont utilisés tels quels.

L'exemple suivant illustre comment utiliser un programme de résolution de résultat.
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;
    }
}  
L'exemple suivant illustre comment enregistrer et utiliser un programme de résolution.
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);

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_resolvers_result_exec
Nom du fichier : txml_resolvers_result_exec.html