Utilisation d'un programme de résolution de source pendant l'exécution
Si vous indiquez un programme de résolution de source au moment de l'exécution d'un exécutable, vous pouvez indiquer au processeur comment interpréter les URI référencés à cet instant.
Procédure
Ceci indique au processeur comment interpréter les URI référencés à cet instant, dans les appels aux fonctions fn:doc() ou fn:document() par exemple.
Le comportement par défaut pour résoudre la source consiste à interpréter les URI relatifs par rapport à l'URI de base de l'expression, de la requête ou de la feuille de style, quand cet URI de base est disponible, ou à les interpréter comme des chemins de fichier par rapport au répertoire de travail en cours, dans le cas contraire. Les URI absolus sont utilisés tels quels.
Pour modifier ce comportement, créez une classe Java™ pour implémenter l'interface XSourceResolver et enregistrez celle-ci dans le contexte dynamique avant d'exécuter l'expression, la requête ou la feuille de style.
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);