Transformation d'un fichier XML en fichier XML

avec une feuille de style XSLT

Transformation selon une feuille de style XSLT : le problème vu du coté des APIs JAVA.
Un cours sur le langage de transformation XSLT est accessible sur ce site.

Programme

// Transform.java

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.*;
public class Transform
{
    public static void main (String argv [])
    {
        if (argv.length != 2){
            System.err.println ("Usage: java Transform fileXSLT filesource ");
            System.exit (1);
        }
        DocumentBuilderFactory factory =
            DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(new File(argv[1]));
            TransformerFactory transformFactory =
                               TransformerFactory.newInstance();
            StreamSource styleSource = 
                         new StreamSource(new File(argv[0]));
            // lire le style
            Transformer transform = 
                      transformFactory.newTransformer(styleSource);
            // conformer le transformeur au style
            DOMSource in = new DOMSource(doc);
            StreamResult out = new StreamResult(System.out);
            transform.transform(in, out);
            // transformer selon le style 
        } catch (TransformerConfigurationException e) {
           System.out.println (" Transformer Factory error");
           System.out.println("   " + e.getMessage() );
           Throwable x = e;
           if (e.getException() != null)
               x = e.getException();
           x.printStackTrace();
        } catch (TransformerException e) {
           System.out.println ("Transformation error");
           System.out.println("   " + e.getMessage() );
           Throwable x = e;
           if (e.getException() != null)
               x = e.getException();
           x.printStackTrace();
         } catch (SAXException e) {
           Exception  x = e;
           if (e.getException() != null)
               x = e.getException();
           x.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (Exception e)  {
           e.printStackTrace();
        }
    } 
}

commandes et résultats

 $ java Transform style0.xsl dialogue9.xml
acte I, Scene 1 : madame pernelle et flipote sa servante,elmire, 
mariane, dorine, damis, cléante.madame pernelleAllons, Flipote, 
allons, que d'eux je me délivre.elmireVous marchez d'un tel pas 
qu'on a peine à vous suivre.madame pernelleLaissez, ma bru, 
laissez, ne venez pas plus loin: Ce sont toutes façons ....
// tous les textes y sont, manque le reste !
.....

La feuille de style "style0" précise que :

$ java Transform style1.xsl dialogue6.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<dialogue>
<situation>acte I, Scene 1 : madame pernelle et flipote sa servante,elmire, mariane, dorine, damis, cléante.</situation>
<replique>
<personnage>madame pernelle</personnage>
<texte>Allons, Flipote, allons, que d'eux je me délivre.</texte>
</replique>
<replique>
<personnage>elmire</personnage>
<texte>Vous marchez d'un tel pas qu'on a peine à vous suivre.</texte>
// tous les textes et éléments y sont, manque les attributs !
....

La feuille de style "style1" précise que :


  

 index  suivant