Voici une partie de ma stylesheet XSL :
Code :
- <?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 :
- // 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);
|
---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3