Bonjour,
Je veux réussir à tranformer un document xml en plusieurs documents xml et je me suis tourné vers les XSLT. J'ai réussi à faire fonctionner une première ébauche de code avec une feuille de style assez basique mais je rencontre un problème bizarre lorsque je veux récupérer cette feuille de style d'une chaîne de caractères et non pas d'un fichier :

voici le code qui fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
try{
String fileName = TestXmlReceiverBalise.class.getResource("TestXmlReceiverBalise_Data.xml").getFile();
 
String xslt= TestXmlReceiverBalise.class.getResource("TestXmlReceiverBalise_XSLT.xml").getFile();
      TransformerFactory tFactory = TransformerFactory.newInstance();
      Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));
      transformer.transform(new StreamSource(fileName), new StreamResult(System.out));
 
catch (Exception e){
      e.printStackTrace();
    }
maintenant le code qui ne fonctionne pas :
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
 
try{
String fileName = TestXmlReceiverBalise.class.getResource("TestXmlReceiverBalise_Data.xml").getFile();
 
      StringBuffer xsltb = new StringBuffer().append("<? xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>");
      xsltb.append("<xsl:stylesheet version=\"1.0\"  xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">");
      xsltb.append("  <xsl:output encoding=\"iso-8859-1\" method=\"xml\" />");
      xsltb.append("    <xsl:template match=\"/\">");
      xsltb.append("      <xsl:for-each select=\"//ELEMENT[position()=1]\">");
      xsltb.append("        <xsl:copy-of select=\".\"/>");
      xsltb.append("      </xsl:for-each>");
      xsltb.append("    </xsl:template>");
      xsltb.append("</xsl:stylesheet>");
 
      String xslt = xsltb.toString();
      TransformerFactory tFactory = TransformerFactory.newInstance();
      Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));
      transformer.transform(new StreamSource(fileName), new StreamResult(System.out));
 
 
catch (Exception e){
      e.printStackTrace();
    }
Je voulais passer ma feuille de style en tant que chaîne de caracteres pour pouvoir modifier le ELEMENT[position()=1] en ELEMENT[position()=i] ou i serait un compteur pour pouvoir créer un document xml pour chaque balise. Enfin en tout cas c'est l'idée après je sais pas si ça fonctionnera

Mais ce code déclenche l'erreur suivante :
ERREUR : 'no protocol:
ERREUR BLOQUANTE : 'Impossible de compiler la feuille de style'

Quelqu'un a t il une idée du problème qui déclencherait cette erreur?

Merci