web-dev-qa-db-fra.com

Traitement XSLT avec Java?

Comment transformer XML avec un processeur XSLT en Java en utilisant le JDK?

66
Venkat

Voici un exemple d'utilisation de Java api pour transformer, comme l'a dit @Raedwald:

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import Java.io.File;
import Java.io.IOException;
import Java.net.URISyntaxException;

public class TestMain {
    public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
        TransformerFactory factory = TransformerFactory.newInstance();
        Source xslt = new StreamSource(new File("transform.xslt"));
        Transformer transformer = factory.newTransformer(xslt);

        Source text = new StreamSource(new File("input.xml"));
        transformer.transform(text, new StreamResult(new File("output.xml")));
    }
}

L'entrée peut également provenir d'une chaîne ou de DOMSource, la sortie peut être adressée à DOMSource etc .

132
Askar Kalykov

La bibliothèque standard Java fournit une interface de transformation (XSLT) pour l'analyse XML. Voir la documentation de l'API pour les classes javax.xml.transform.Transformer et javax.xml.transform.TransformerFactory.

8
Raedwald

Je suis nouveau sur xslt. Quelqu'un peut-il me guider comment traiter avec xslt java?

Cela dépend du processeur XSLT basé sur Java que vous utilisez. Chaque processeur XSLT a sa propre API.

Par exemple, Saxon 6.5.5 (pour XSLT 1.0) et Saxon 9.1.07 (pour XSLT 2.0) sont écrits en Java. La documentation est à http://www.saxonica.com/documentation/documentation.xml

Presque tous les processeurs XSLT disposent d'un utilitaire de ligne de commande , qui ne nécessite pas l'écriture d'un programme pour effectuer une transformation XSLT.

Par exemple, voici: comment démarrer une transformation Saxon 9.x à partir de la ligne de commande .

Voici comment j'utilise toujours Saxon depuis la ligne de commande :

Java -Xms2048M  -Xmx10000M  -jar  
     C:\xml\Parsers\Saxon\Ver.9.1.0.7\J\saxon9.jar 
    -t  -repeat:1  -o %out%  %xml%  %xsl%  %param[ name=\"value\"]%

%out% est le nom du fichier de sortie, %xml% est le fichier XML, %xsl% est le fichier xslt principal et %param[ name=\"value\"]% est une liste nom-valeur de paramètres externes (je la laisse presque toujours vide).

7
Dimitre Novatchev

JAXP fournit un moyen indépendant de la mise en œuvre de travailler avec des transformations XSLT. Voici le tutoriel pour vous aider à démarrer. Si vous travaillez avec d’énormes XSLT et/ou avec plusieurs XSLT, il est également possible de mettre en cache les modèles XSLT analysés pour des raisons de performances. Cet article explique comment mettre en cache xslt

5
Aravind R. Yarram