thierry_b | 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 :
- 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 :
- 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 :-) |