[XML / XSL] Interpreter les DTD internes

Interpreter les DTD internes [XML / XSL] - Java - Programmation

Marsh Posté le 23-11-2007 à 00:39:47    

Voici une partie de ma stylesheet XSL :
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE Bonjour [
  3.   <!ENTITY newline  "<![CDATA[&#xa;]]>
  4. "> ]>
  5. <!--dos command : c:\prog\XSLTproc\xsltproc.exe mail-xsl2text.xml mail.xml > c:\mail.txt-->
  6. <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/TR/REC-html40"
  7. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  8. <xsl:preserve-space elements="organization" />
  9. <xsl:output method="text" encoding="UTF-8" indent="no" />
  10. <!--  Root traversal-->
  11. <xsl:template match="/">
  12.  <xsl:text>[Abstract]</xsl:text>
  13.  &newline;
  14.  <xsl:variable name="abstractValue"
  15.   select="/mail/body/abstract/text()" />
  16.  <xsl:if test="$abstractValue!=''">
  17.   <xsl:value-of select="$abstractValue" />
  18.   &newline;
  19.  </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. // load the transformer using JAXP
  2.  TransformerFactory factory = TransformerFactory.newInstance();
  3.  Transformer transformer = factory.newTransformer(new StreamSource(
  4.      XSLFilename));
  5.  StringWriter transformedStream = new StringWriter();
  6.  DocumentSource source = new DocumentSource(this.XMLStream);
  7.  StreamResult result = new StreamResult(transformedStream);
  8.  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
Reply

Marsh Posté le 23-11-2007 à 00:39:47   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed