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 :

[SVG] Problème de code Java ? [XSLT]


Sujet :

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

  1. #1
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut [SVG] Problème de code Java ?
    Bonjour,

    J'ai un fichier XML que je voudrai transformer grâce à XSLT et j'ai pour cela suivi la FAQ correspondante.

    Malgré tout, mon fichier de sortie ne contient qu'une seule ligne à la fin de la transformation et après plusieurs tests, j'en suis arrivée à la conclusion que mon problème devait se situer au niveau de mon code java, le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void convertXML(String xml) throws TransformerException {
     
    	File file = new File("resultat.xml");
    	StreamResult xmlresult = new StreamResult(file);
     
    	Source xmlsource = new StreamSource(new StringReader(xml));
     
    	TransformerFactory xsltfactory = TransformerFactory.newInstance();
    	Transformer xsltengine = xsltfactory.newTransformer(new StreamSource(new File("transfo.xsl")));
     
    	xsltengine.transform(xmlsource,xmlresult);
     
    }
    Quand à mon fichier resultat.xml il contient seulement cette ligne...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="UTF-8"?>
    Quelqu'un aurait-il une idée ?

    Merci !
    This is NOT my boyfriend's computer.

  2. #2
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ah oui si j'ai mis SVG en tag c'est parce qu'une fois que j'aurai trouvé le problème, mon fichier de sortie sera un SVG (mais je ne pense pas que cela change grand chose puisque déjà comme ça je n'obtiens rien)
    This is NOT my boyfriend's computer.

  3. #3
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Et encore au cas où ce serait mon fichier xsl qui serait mauvais je le mets aussi tant qu'à faire si ça peut vous donner des idées

    Merci bien !

    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
    70
    71
    72
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg">
     
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
    	<xsl:variable name="case-width">100</xsl:variable>
    	<xsl:variable name="case-height">30</xsl:variable>
    	<xsl:variable name="font-size">20</xsl:variable>
     
    	<xsl:template match="/process-definition">
    		<svg width="800px" height="600px">
    			<!-- definition du triangle pour la fleche //-->
    			<defs>
    				<marker id="Triangle" 
    					viewBox="0 0 10 10" refX="0" refY="5" 
    					markerUnits="strokeWidth" 
    					markerWidth="12" markerHeight="9" 
    					orient="auto">
    					<path d="M 0 0 L 10 5 L 0 10 z" />
    				</marker>
    			</defs>		
    			<rect x="1" y="1" width="798" height="598" fill="#F0F0FF" stroke="blue" stroke-width="2" />		
    			<xsl:apply-templates select="start-state" />
    			<xsl:apply-templates select="end-state" />			
    		</svg>
    	</xsl:template>	
     
    	<xsl:template match="start-state">
    		<xsl:variable name="start-posx">400</xsl:variable>
    		<xsl:variable name="start-posy">100</xsl:variable>		
    		<xsl:for-each select="transition">
    			<xsl:call-template select="transition" />
    		</xsl:for-each>		
    		<rect x="{$start-posx+-0.5*$case-width}" y="{$start-posy+-0.5*$case-height}" width="{$case-width}" height="{$case-height}" rx="5" fill="blue" />		
    		<text x="{$start-posx}" y="{$start-posy+0.25*$font-size}" font-family="Verdana" font-size="{$font-size}" fill="white" text-anchor="middle">
    			<xsl:value-of select="./@name" />
    		</text>		
    	</xsl:template>	
     
    	<xsl:template match="end-state">	
    		<xsl:variable name="end-posx">400</xsl:variable>
    		<xsl:variable name="end-posy">200</xsl:variable>		
    		<rect x="{$end-posx+-0.5*$case-width}" y="{$end-posy+-0.5*$case-height}" width="{$case-width}" height="{$case-height}" rx="5" fill="blue" />		
    		<text x="{$end-posx}" y="{$end-posy+0.25*$font-size}" font-family="Verdana" font-size="{$font-size}" fill="white" text-anchor="middle">
    			<xsl:value-of select="./@name" />
    		</text>		
    	</xsl:template>
     
    	<xsl:template match="transition">
     
    		<!-- dessin des fleches //-->
    		<xsl:variable name="transition-name"><xsl:value-of select="./@name" /></xsl:variable>
    		<xsl:variable name="transition-to"><xsl:value-of select="./@to" /></xsl:variable>
     
    		<!-- dessin de la fleche sortante //-->
     
    		<xsl:variable name="xstart">400</xsl:variable>
    		<xsl:variable name="ystart">100</xsl:variable>
    		<xsl:variable name="xend">400</xsl:variable>
    		<xsl:variable name="yend">200</xsl:variable>
     
    		<polyline fill="none" stroke="black" stroke-width="2" 
    			points="{$xend},{$yend}
    			{0.5*$xend+0.5*$xstart},{0.5*$yend+0.5*$ystart}
    			{$xstart},{$ystart}" 
    			marker-mid="url(#Triangle)" />
     
    		<!-- fin du dessin des fleches //-->
     
    	</xsl:template>
     
    </xsl:stylesheet>
    This is NOT my boyfriend's computer.

  4. #4
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Ne contient qu'une seule ligne ? Tu veux dire qu'il n'y a pas de retour chariot, ou bien que ton xsl ne crache que la première ligne ?
    Au fait, je crois qu'il te manque ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    transformer.setOutputProperty(OutputKeys.METHOD, "text");
    dans ton code
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  5. #5
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ben en fait quand je dis que je n'obtiens qu'une ligne c'est dans mon fichier de sortie, le resultat.xml et je ne sais pas à quoi c'est dû, si c'est à cause de mon xsl ou à cause de mon code...

    Quand je rajoute ta ligne de code, y a carrément plus rien qui s'affiche

    Merci de m'aider en tout cas
    This is NOT my boyfriend's computer.

  6. #6
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Dans ton fichier de sortie :
    Tu as tout sur une seule ligne ?
    Ou
    Tu n'as que la première ligne ?
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  7. #7
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Je n'ai QUE la 1ere ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    Avec plusieurs lignes vides à la suite...
    This is NOT my boyfriend's computer.

  8. #8
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ah je crois que j'ai cerné le problème...

    Apparemment dans mon xsl j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="start-state">
    		<xsl:variable name="start-posx">400</xsl:variable>
    		<xsl:variable name="start-posy">100</xsl:variable>		
    		<xsl:for-each select="transition">
    			<xsl:call-template select="transition" />
    		</xsl:for-each>		
    		............
    
    	</xsl:template>
    j'ai aussi essayé un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:apply-template select="transition" />
    Mais apparemment il n'aime pas trop... On ne peut pas appeler un template dans un autre template ?

    Merci !
    This is NOT my boyfriend's computer.

  9. #9
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Bon ben j'ai corrigé le xsl (en fait on ne peut pas mettre de "select" dans "call-template" mais juste un "name") et il ne me donne plus d'erreur dessus mais toujours pas de résultat...
    This is NOT my boyfriend's computer.

  10. #10
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Tu peux appeler un template dans un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:apply-template select="ton_noeud"/>
    Que tu définis en dehors de ton template courant (comme une fonction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <xsl:template match="ton_noeud">
             <xsl:value-of select="ton_sous_noeud"/>
        </xsl:template>
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  11. #11
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ben oui c'est ce que j'ai fait :

    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
     
    <xsl:template match="/process-definition">
    ..............
            <xsl:apply-templates select="start-state" />
    </xsl:template>	
     
    <xsl:template name="transition">
    ...........
    </xsl:template>
     
    <xsl:template match="start-state">
       <xsl:for-each select="transition">
    	<xsl:call-template name="transition" />
       </xsl:for-each>
    </xsl:template>
    une idée ???

    Merci
    This is NOT my boyfriend's computer.

  12. #12
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    au lieu de faire un call-template, t'as essayé un apply-template ?
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  13. #13
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ben oui et il aime pas du tout, là il me donne une erreur qui dit que je ne peux pas placer <xsl:apply-template> à cet endroit.
    This is NOT my boyfriend's computer.

  14. #14
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Moi j'aurai fait comme ca :
    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
    <xsl:template match="/process-definition">
    ..............
            <xsl:apply-templates select="start-state" />
    </xsl:template>	
    
    <xsl:template match="transition">
    ...........
    </xsl:template>
    
    <xsl:template match="start-state">
       <xsl:for-each select="transition">
    	<xsl:apply-template select="transition" />
       </xsl:for-each>
    </xsl:template>
    Qu'en penses-tu ?
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  15. #15
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Ben il donne toujours la même erreur...

    "xsl:apply-template ne peut pas figurer à cette position dans la feuille de style !"

    This is NOT my boyfriend's computer.

  16. #16
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Bon c'est vraiment un problème de code ou encore autre chose que je n'ai pas pris en compte car là je viens de faire un exemple tout simple, utilisant un xml et une xsl pour générer un pauvre petit html de rien du tout qui ne contient absolument rien
    This is NOT my boyfriend's computer.

  17. #17
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Donne un bout de code XML histoire que je puisse tester chez moi
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  18. #18
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Bon alors en fait j'ai trouvé où résidait le problème (enfin) et c'est bien dans le xsl finalement

    En fait il ne rentrait déjà pas dans mon noeud principal quand j'écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:template match="/process-definition">
    Je l'ai remplacé par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:template match="/">
    Et là ça marche ! (tout ça pour ça )

    Bref et du coup il ne rentre quand même pas dans mes noeuds suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <xsl:apply-templates select="start-state" />
    <xsl:apply-templates select="end-state" />
    Et je pense que c'est le même problème... Faut juste que je trouve la syntaxe correcte

    Je posterai la réponse, au cas où ça peut aider quelqu'un... (si je la trouve mouarf)

    Merci bien de ton implication en tout cas ! (si tu as des remarques vis-à-vis de la syntaxe n'hésite pas ! )
    This is NOT my boyfriend's computer.

  19. #19
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Tu dois pas être dans le bon noeud...
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:apply-templates select="process-definition/start-state" />
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

  20. #20
    Membre régulier Avatar de kitsune
    Inscrit en
    Décembre 2004
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Décembre 2004
    Messages : 341
    Points : 112
    Points
    112
    Par défaut
    Argh mais non ça ne marche pas ! C'est pas croyable ce truc, j'ai tout essayé il en veut pas de mon template "start-state"
    This is NOT my boyfriend's computer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probléme avec iReport + java code à barre vide
    Par youssef_rjili dans le forum iReport
    Réponses: 0
    Dernier message: 13/07/2012, 17h18
  2. Problème de code en Java
    Par felixismad dans le forum NetBeans
    Réponses: 6
    Dernier message: 13/11/2011, 13h30
  3. problème génération de Java Code from wsdl
    Par hassen07 dans le forum Services Web
    Réponses: 0
    Dernier message: 03/02/2010, 18h02
  4. probléme avec mon code JAVA et MYSQL
    Par ulysse031 dans le forum JDBC
    Réponses: 5
    Dernier message: 10/05/2007, 00h46
  5. Réponses: 1
    Dernier message: 09/03/2007, 14h40

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