IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Interpreter les DTD internes [XSLT]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 110
    Par défaut Interpreter les DTD internes
    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);

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 110
    Par défaut
    C'est bon j'ai trouvé .
    En fait c'était mon fichier XSL qui était foireux !
    Il le faut formatter exactement comme cela :

    Code : 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
    <!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:output method="text" encoding="UTF-8" indent="no"
    		media-type="text/plain"/>
    	<!--		Root traversal-->
    	<xsl:template match="/">
    		<xsl:text>[Abstract]</xsl:text>
    		<xsl:text>&newline;</xsl:text>
    		<xsl:variable name="abstractValue"
    			select="/mail/body/abstract/text()" />
    		<xsl:if test="$abstractValue!=''">
    			<xsl:value-of select="$abstractValue" />
    			<xsl:text>&newline;</xsl:text>
    		</xsl:if>
    		<xsl:text>[Description]</xsl:text>
    		<xsl:text>&newline;</xsl:text>
    C'est à dire que la référence &newline doit être entre des balises <xsl:text>
    et la DOCTYPE déclarer doit être sur une seule ligne sinon le retour à la ligne est interpréter lors de la substitution de &newline.

    Et voilà .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DTD] Le printemps et les DTD
    Par breezer911 dans le forum Valider
    Réponses: 3
    Dernier message: 23/08/2006, 16h08
  2. Zend Studio Server, faire interpréter les ".htm"
    Par bclg dans le forum Zend Studio
    Réponses: 1
    Dernier message: 19/06/2006, 12h30
  3. Interpreter les balises html
    Par kahya dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 14/06/2006, 09h42
  4. [textarea] interpreter les balises
    Par duplo dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/05/2006, 18h57
  5. Les DTD et les espaces entre cellules de tableaux
    Par YuGiOhJCJ dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 14/01/2006, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo