Utilización de un solucionador de orígenes en el tiempo de ejecución
Si especifica un solucionador de orígenes en el tiempo en que se está ejecutando un ejecutable, puede indicar al procesador cómo interpretar los URI a los que se hace referencia en ese momento.
Procedimiento
Así se indica al procesador cómo interpretar los URI a los que se hace referencia en ese momento, en llamadas a las funciones fn:doc() o document(), por ejemplo.
El comportamiento predeterminado de la resolución de orígenes es interpretar los URI relativos en términos del URI base de la expresión, consulta u hoja de estilo, si el URI base está disponible o para interpretarlos como vías de acceso de archivos relativas para el directorio de trabajo actual si el URI base no está disponible. Los URI absolutos se utilizan sin modificar.
Para cambiar este comportamiento, escriba una clase Java™ que implemente la interfaz XSourceResolver y regístrela con XDynamicContext antes de ejecutar la expresión, la consulta o la hoja de estilo.
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 source resolver with the dynamic context
XSourceResolver sourceResolver=new ASourceResolver(replacementBase);
dynamicContext.setSourceResolver(sourceResolver);
// Execute the XPath expression
XSequenceCursor cursor = executable.execute(new StreamSource(inputFile), dynamicContext);