Voici une partie de ma stylesheet XSL :

Code xml : 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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Bonjour [
  <!ENTITY newline  "<![CDATA[&#xa;]]>
"> ]>
<!--dos command : c:\prog\XSLTproc\xsltproc.exe mail-xsl2text.xml mail.xml > c:\mail.txt-->
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/REC-html40"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:preserve-space elements="organization" />
	<xsl:output method="text" encoding="UTF-8" indent="no" />
	<!--		Root traversal-->
	<xsl:template match="/">
		<xsl:text>[Abstract]</xsl:text>
		&newline;
		<xsl:variable name="abstractValue"
			select="/mail/body/abstract/text()" />
		<xsl:if test="$abstractValue!=''">
			<xsl:value-of select="$abstractValue" />
			&newline;
		</xsl:if>

Celle-ci dispose d'une DTD interne. Lorsque j'applique cet XSL à mon document XML avec xsltproc, la sortie est nickel. Les ref &newline sont bien interprétées. Mais en Java, ces Références ne sont pas interprétées ! et le document transformé et sortie sur une seule ligne. Pourquoi ? Comment résoudre le problème ?

Mon code java pour la transformation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
// load the transformer using JAXP
		TransformerFactory factory = TransformerFactory.newInstance();
		Transformer transformer = factory.newTransformer(new StreamSource(
		    XSLFilename));
 
		StringWriter transformedStream = new StringWriter();
		DocumentSource source = new DocumentSource(this.XMLStream);
		StreamResult result = new StreamResult(transformedStream);
		transformer.transform(source, result);