J'utilise les API JAXP XSLT (javax.xml.transform) pour transformer un fichier XML.Quelle est la TransformerFactory par défaut?
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xslSource);
transformer.transform(inputSource, outputResult);
Le javadoc pour TransformerFactory dit: Il utilise la procédure de recherche suivant l'ordre de déterminer la classe de mise en œuvre de TransformerFactory à la charge:
- Utilisez la propriété du système javax.xml.transform.TransformerFactory.
- Utilisez le fichier de propriétés "lib/jaxp.properties" dans le répertoire JRE. Ce fichier de configuration est au format java.util.Properties standard et contient le nom complet de la classe d'implémentation avec la clé étant la propriété système définie ci-dessus. Le fichier jaxp.properties est lu une seule fois par l'implémentation JAXP et ses valeurs sont ensuite mises en cache pour une utilisation ultérieure. Si le fichier n'existe pas lors de la première tentative de lecture de , aucune autre tentative n'est effectuée pour pour vérifier son existence. Il n'est pas possible de modifier la valeur de toute propriété dans jaxp.properties après qu'elle a été lue pour la première fois pour .
- Utilisez l'API Services (telle que détaillée dans la spécification JAR ), si elle est disponible, pour déterminer le nom de la classe. L'API Services recherchera un nom de classe dans le fichier META-INF/services/javax.xml.transform.TransformerFactory dans les fichiers jarres disponibles pour l'exécution.
- Instance TransformerFactory par défaut de la plate-forme.
Je me demande comment décider quelle est l'instance par défaut de TransformerFactory?
Merci. Comment vérifier quelle version de XSLT (1.0, 2.0, 3.0) est prise en charge par le processeur xslt par défaut inclus avec Oracle JDK, par exemple Oracle JDK 1.6? – user3014901
Le processeur XSLT par défaut dans toutes les versions actuelles du JDK Oracle ne prend en charge que XSLT 1.0. Mais si vous voulez vérifier cela, vous pouvez écrire un test comme 'test =" system-property ('xsl: version') = 1.0 "' –