Bonjour,

J'essaie d'utiliser SAX pour faire ma transformation XSL sur un fichier XML avec l'api java 1.5 (utilisant xalan).

Apparemment, cela n'a pas l'air de marcher avec un XML contenant des namespace.

Voici ma méthode Java :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public String transformWithSAX(String input, InputStream xslStream, String styleSheetName, HashMap<String,String> styleSheetParameters, boolean namespaceAware) throws IOException {
    	 try {
             StringReader inputSource = new StringReader(input);
 
             SAXParserFactory spf = SAXParserFactory.newInstance();
             spf.setNamespaceAware(namespaceAware);
 
             SAXSource sourceInput = new SAXSource(new InputSource(inputSource));
 
             StreamSource styleSource = new StreamSource(xslStream);
             styleSource.setSystemId(new File(styleSheetName));
 
             // Create a transformer for the stylesheet.
             TransformerFactory factory = TransformerFactory.newInstance();
 
             Templates templates = factory.newTemplates(styleSource);
             Transformer transformer = templates.newTransformer();
 
             // Insert parameters
             if (styleSheetParameters != null) {
                 Iterator<String> iterator = styleSheetParameters.keySet().iterator();
                 String keyName;
                 while (iterator.hasNext()) {
                     keyName = (String) iterator.next();
                     transformer.setParameter(keyName, styleSheetParameters.get(keyName) );
                 }
             }
 
             StringWriter out = new StringWriter();
             StreamResult result = new StreamResult(out);
 
             transformer.transform(sourceInput, result);
 
             return ((StringWriter) result.getWriter()).toString();
         } catch (Exception ex) {
             logger.error("exception during transfo With style sheet " + styleSheetName
                     + " for XML file:\n" + input, ex);
             throw new IOException(ex.toString());
         }
    }
La ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
spf.setNamespaceAware(namespaceAware)
n'a pas l'air d'être efficace qu'on lui passe false ou true...

Une idée? (car ça marchait bien avec DOM).

Merci :-)