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[
]]> "> ]> <!--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);
Partager