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 :

[DOM4J] Problématique conversion


Sujet :

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

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Points : 4
    Points
    4
    Par défaut [DOM4J] Problématique conversion
    Bonjour,

    Je me tourne vers vous car je rencontre un problème que je ne sais comment résoudre ...., en plus je débute en java donc c'est encore plus compliqué pour moi ......................

    Description:
    J'ai une Servlet Java qui me sert de point d'entrée pour un traitement XML
    Cette Servlet Interroge un certain nombre de services web et genere un fichier XML (jusque là ca marche)

    Ensuite, je dois transformer ce XML obtenu avec une feuille XSL principales qui intégre ensuite de nombreuses autres feuilles XSL afin d'afficher un résultat en HTML sur le navigateur.

    Mon problème arrive ici, ma transformation XSL s'effectue cependant j'ai quelques dysfonctionnement ensuite, j'utilise dans le XSL l'option "disable-output-escaping" dans mon html j'ai des balises
    <?javax.xml.transform.disable-output-escaping ?> et
    <?javax.xml.transform.enable-output-escaping ?> qui s'ajoute et qui en plus ne semble pas faire ce qu'elle devrait transformer mon &gt; en ">".

    Je voudrais donc savoir s'il est possible d'eviter que mon code HTLM contienne ces balises ? car cela me pose pas mal de problèmes

    merci d'avance de vos réponses.

    Jdkally

  2. #2
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Bon, je ne sais pas si ca peut aider à être plus clair mais voici le code de ma Servlet :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    package Monpackage.servlets;
     
    import java.io.*;
    import java.util.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import org.dom4j.*;
    import org.dom4j.io.*;
    import Monpackage.RechercheManager;
    import Monpackage.xml.*;
     
    //public class MaServlet extends HttpServlet {
    public class MaServlet extends HttpServlet {
     
    	public Document StyleDocument (Document document) throws Exception {
     
    			TransformerFactory factory = TransformerFactory.newInstance();
    			Transformer transformer = factory.newTransformer(new StreamSource("/home/www/IntegrationNavitia/defaultRoot/xsl/page_transport_recherche_avancee.xsl"));
     
          DocumentSource source = new DocumentSource( document );
          DocumentResult result = new DocumentResult();
     
          transformer.transform( source, result );
     
          Document transformedDoc = result.getDocument();
          return transformedDoc ;
    	}
     
     
    	protected void service(HttpServletRequest p_oRequest, HttpServletResponse p_oResponse) throws ServletException, IOException {
     
    		try {
    			//recherche
    			RechercheManager oRechercheManager = new RechercheManager();
     
    			SAXReader oSAXReader1 = new SAXReader();
    			SAXReader oSAXReader2 = new SAXReader();
     
    			Document oDocumentExternal1 = oSAXReader1.read("/home/www/xsl/messages_fr.xml");
    			Document oDocumentExternal2 = oSAXReader2.read("/home/www/xsl/configuration.xml");
     
    			Document oDocumentExternal = oRechercheManager.getRechercheXml(p_oRequest);
    			oDocumentExternal.getRootElement().appendContent(oDocumentExternal1);
    			oDocumentExternal.getRootElement().appendContent(oDocumentExternal2);
     
    			/* Initialisation flux de sortie */
    			PrintWriter oWriter = p_oResponse.getWriter();
    			p_oResponse.setContentType("text/html");
     
     
    			/* Lancement de la Transformation XSL du Document XML */
    			oDocumentExternal = StyleDocument(oDocumentExternal);
     
    			/* Envoi du Document HTML resultant sur le Flux HTTP du navigateur */
    			String s = XML.getPrettyPrintXML(oDocumentExternal);
    			oWriter.print(s);
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
     
    	}
    }
    ci-dessous la partie de ma feuille XSL en cause .........
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="1.0"
    >
     
    <xsl:template mode="recherche_avancee" match="/">
      .
      .
      .
      .
     
       <script Language="JavaScript">  
     
    		// fonction pour rendre accessible ou non les adresses (cas des comptes utilisateur)
    		function selection_lieu(p_name, _input) {			
    			var etat = false ;
     
    			if (_input != undefined) {
    				if (_input.selectedIndex <xsl:text disable-output-escaping="yes">&gt;</xsl:text> 0) {
    					etat = true;
    				}
    			}
    		}
     
    	 </script>
    	 .
    	 .
    	 .
    	 .
    	 .
    	 .
     
    </xsl:template>
     
    </xsl:stylesheet>
    Et voici le résultat en sortie dans mon navigateur
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <html lang="fr">
      <head>
       .....
      </head>
     
      <body>
        ...
        ...
     
        <script Language="JavaScript">
          function selection_lieu(p_name, _input) { 
            var etat = false ; 
            if (_input != undefined) { 
              if (_input.selectedIndex <?javax.xml.transform.disable-output-escaping ?>&gt;<?javax.xml.transform.enable-output-escaping ?> 0) { 
                etat = true; 
              }
            }
          }
        </script>
     
        ...
        ...
        ...
     
      </body>
    </html>
    Le problème est que du coup le script Javascript ne fonctionne pas !
    En esperant que cela pourra aider pour une piste sur mon problème.

    Merci d'avance.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 62
    Points : 162
    Points
    162
    Par défaut
    D'après cette page :
    http://www.w3schools.com/xsl/el_text.asp

    L'option disable-output-escaping agit sur les caractères spéciaux. Et le mettre à "yes" supprime l'échappement et laisse les caractères tels quels.
    Donc si tu veux avoir un le caractère supérieur, il faudrait l'écrire tel quel dans le xsl:text.
    Mais de toute manière, selon cette page :
    http://www.stylusstudio.com/xsllist/...post41390.html

    il est recommandé de ne pas utilisé cette option. Pourquoi veux-tu l'utiliser d'ailleurs ? Si tu laisses juste &gt;, ça ne le transforme pas en '>' après transformation ?

  4. #4
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    D'abord Merci pour la réponse......

    Sans disable-output-escaping :
    que je mette &gt; ou > ca me donne le même resultat dans le html cad "&gt;"

    si je laisse le disable output :
    dans tous les cas j'ai <?javax.xml.transform.disable-output-escpaing ?>&gt;<?javax.xml.transform.enable-output-escpaing ?>

    ????????? je sais plus ou chercher .......

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 62
    Points : 162
    Points
    162
    Par défaut
    Ouais OK.
    Je serai toi je chercherai du côté des caractères spéciaux HTML.
    Et si tu mets :
    en lieu et place de ton &gt; en enlevant le xsl:text ?

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    C'est le résultat que j'avais obtenu (sans Mettre disable-output-escaping)
    ca me donne dans tous les cas ....


  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 62
    Points : 162
    Points
    162
    Par défaut
    Et comme ça ?

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    eh bien non plus .....
    j'avais essayé aussi :

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:text disable-output-escaping="yes">></xsl:text>
    ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?javax.xml.transform.disable-output-escaping ?>&gt;<?javax.xml.transform.enable-output-escaping ?>
    et directement dans la page : ca donne
    .....


Discussions similaires

  1. [DOM4J] conversion d'une node w3c vers Node Dom4J
    Par laurent_m dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 09/03/2009, 00h01
  2. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14
  3. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35
  4. [Conversions] Millisecondes...
    Par agh dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h25
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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