Bonjour à tous!
Je viens vers vous car je rencontre un problème pour appliquer un XSLT sur un XML que je génère avec SAX à partir d'une base de données (MySQL).

Mon projet est une application web sur Tomcat, je renvoi donc le résultat de la conversion [Base de données --> XML] sur le PrintWriter du HttpServletResponse.

Voila comment je génère le XML :

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
 
StreamResult streamResult = new StreamResult(writer);
SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
 
if(xslt != null)
{
	Templates templates = tf.newTemplates(new StreamSource( new File(xslt)));
	hd = tf.newTransformerHandler(templates);
}
else
	hd = tf.newTransformerHandler();
 
Transformer serializer = hd.getTransformer();
 
serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
 
if(dtd != null)
	serializer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, dtd);
 
 
atts = new AttributesImpl();
 
hd.setResult(streamResult);
hd.startDocument();
 
this.generateNode(); //Je crée dans cette méthode les différents éléments de mon XML 
 
hd.endDocument();
Quand je ne définis pas la variable "xslt" mon XML est renvoyé correctement.
Quand je définis cette variable avec le path de mon fichier xsl, la définition du xslt est suivie (dans le <xsl:template match="/">) jusque au moment ou <xsl:apply-templates /> est appelé.

Pour mieux comprendre voici un exemple du xml :

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
 
<films>
	<film>
		<film_film_id>1</film_film_id>
		<film_title>ACADEMY DINOSAUR</film_title>
		<actors>
			<actor>
				<actor_first_name>PENELOPE</actor_first_name>
				<actor_last_name>GUINESS</actor_last_name>
			</actor>
			...
		</actors>
	</film>
	...
</films>
Et du XSLT :

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
 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
	<html>
	<head>
		<title>Test</title>
	</head>
	<body>
		<span style="color:red;">Coucou</span>
		<xsl:apply-templates /> 
	</body>
	</html>
</xsl:template>
 
<xsl:template match="film">
	<p>TOTO</p>
</xsl:template>
 
</xsl:stylesheet>
Le template match="film" n'est jamais appelé, et ça me donne un résultat comme celui-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<html>
	<head>
		<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Test</title>
	</head>
	<body>
		<span style="color:red;">Coucou</span>1ACADEMY DINOSAUR2006-01-0186A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies1PENELOPEGUINESS1CHRISTIANGABLE1LUCILLETRACY1SANDRAPECK .............
	</body>
</html>
Le problème vient vraiment du code java car j'ai testé le xslt sur le xml sans passer par le code.

J'espere que mes explications sont compréhensibles !
Si quelqu'un peut m'aider car je deviens complètement fou ! ^^
Merci d'avance!