Interpreter les DTD internes
Voici une partie de ma stylesheet XSL :
Code:
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:
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); |