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

XSL/XSLT/XPATH XML Discussion :

[XSL] [SVG] passage de valeurs


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut [XSL] [SVG] passage de valeurs
    Bonsoir,

    je voudrais savoir comment faire pour transformer un XML en SVG à l'aide d'un XSL.

    J'arrive à faire quelques dessins en svg mais j'ai un pblm pour récupérer des valeurs dans le fichier XML et arriver à les passer en paramètres dans le XSL. Voila un exemple:

    code XML
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="TestSVG1.xsl"?>
    <themes_list>
        <accidents_classes>
            <accident id="0" lieu="Trou" localisation="0" nb_personnes="3">
                <liste_coord type="P">
                    <coord>
                        <x>2362527</x>
                        <y>1002280</y>
                    </coord>
                    <coord>
                        <x>2362557</x>
                        <y>1021707</y>
                    </coord>
                    <coord>
                        <x>2367206</x>
                        <y>1016190</y>
                    </coord>
                    <coord>
                        <x>2361008</x>
                        <y>1115500</y>
                    </coord>
                    <coord>
                        <x>2365152</x>
                        <y>1007646</y>
                    </coord>
                    <coord>
                        <x>2374944</x>
                        <y>1340045</y>
                    </coord>
                    <coord>
                        <x>2031845</x>
                        <y>1977906</y>
                    </coord>
                    <coord>
                        <x>2031845</x>
                        <y>1977906</y>
                    </coord>
                    <coord>
                        <x>2031845</x>
                        <y>1977906</y>
                    </coord>
                    <coord>
                        <x>2031845</x>
                        <y>1977906</y>
                    </coord>
                </liste_coord>
            </accident>
        </accidents_classes>
    </themes_list>
    A partir de ce fichier XML je souhaite récupérer les coordonnées et les utiliser pour afficher un polyline ou polygon par exemple. Le probleme et que je n'arrive pas a faire "passer" les différentes coordonnées....

    voici mon code XSL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:template match="accident">
    		<svg xmlns="http://www.w3.org/2000/svg">
    			<line x1="50" y1="<xsl:value-of select=list_coord/coord[0]/x>" x2="150" y2="400" stroke="blue"/>
    			<line x1="75" y1="200" x2="350" y2="10" stroke="green"/>
    			<polyline points="20,250, 100,100, 400,100, 300,450" fill="none" stroke="red"/>
    		</svg>		
    </xsl:template>
    le pblm est donc que la ligne
    <line x1="50" y1="<xsl:value-of select=list_coord/coord[0]/x>" x2="150" y2="400" stroke="blue"/>
    n'est pas correct


    Si qqn peut m'aider !!!!

    meci beaucoup

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    regarde dans la FAQ, ils expliquent comment passer des valeurs à un xsl
    en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:element name="line">
      <xsl:attribute name="x">50</xsl:attribute>
      <xsl:attribute name="y"><xsl:value-of select=//list_coord/coord[0]/x></xsl:attribute>
      <xsl:attribute name="x2">150</xsl:attribute>
      <xsl:attribute name="y2">400</xsl:attribute>
      <xsl:attribute name="stroke">blue</xsl:attribute>
    </xsl:element>

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    ok merci !!!

    mais le pblm ce que le nombre de coordonnée est variable et donc je ne sais jamais combien je vais en avoir a l'avance !!

    y a til une maniere de les récupérer tout de meme sans definir une flopée de variables?

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    en fait tu n as pas bein défini ton probléme,
    est ce que ce que tu veux c est d avoir x objets line reprenant a chaque fois un point x et y avec le point suivant x2,y2?
    le truc c que je me sers pas du SVG, c pour ça que je demande

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    ouais en gros c ca!!!

    le but est de définir un polyline ou polygon pour chque accident du fichier xml (j'en ai juste donné un morceau)

    Il faut donc que pour chaque accident je récupère les différentes coordonnées pour produire une ligne svg du style:

    <polyline points="20,250, 100,100, 400,100, 300,450" fill="none" stroke="red"/> SOIT
    <polyline points="x1,y1, x2,y2, x3,y3, x4,y4" fill="none" stroke="red"/>

    ta solution de définir des vraiables est bien mais j'ai un pblm car le nombre de coordonnées peuvent varier en fonction des accidents.

    Donc voila le pblm reformulé en espérant ke cela t'éclaires mieux (bien ke ce soit moi qui suis complétement dans le brouillard...)

    Merci d'avance

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    J'oubliais !!!!

    LLe fichier SVG doit etre produis à l'aide d'un fichier XSL...............(ce serais tellement plus facile si j'avais le droit de faire un chti programme java )

  7. #7
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template match="accident"> 
    	<xsl:element name="polyline">
    		<xsl:attribute name="points">
    			<xsl:for-each select="liste_coord/coord">
    				<xsl:value-of select="x"/><xsl:text>, </xsl:text>
    				<xsl:value-of select="y"/>
    				<xsl:if test="following-sibling::coord">
    					<xsl:text>, </xsl:text>
    				</xsl:if>
    			</xsl:for-each>
    		</xsl:attribute>
    		<xsl:attribute name="stroke">red</xsl:attribute>
    	</xsl:element>
    </xsl:template>
    pour le coup du java...je ne suis pas d accord mais bon c est un point de vu...
    en résumé pour chaque coord du liste_coord (attetion si tu en a plusieurs dans le meme element accident)
    sorti X + ", " + Y
    et si le coord n est pas le dernier alors je rajoute une virgule

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Merci pour ton aide et ta proposition de solution !!!

    Donc si j'ai bien compris:

    au lieu de définir la balise <polylin> moi meme tu la définis comme un element dans le XSL. Ainsi lors de l'interprétation du XML avec le XSL, cela va me créer effectivement la balise souhaitée puis je la remplie a l'aides des autres règles avec du Xpath et des <xsl: text>.

    Du coup j'obtiens bien un doc avec des balises SVG( <polylin> ) ce ki devraient bien faire ce que je souhaite....

    Je suis un bon élève?

  9. #9
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    heu...bah...euh comment dire...
    personnelement tout ce que je vois c est une liste de coord dont tu dois récuperer les x et y dans un objet s appellant polyline....
    en xsl il suffit de donner ce nom a un element et d effectuer la bonne commande xsl pour récupérer les x et y à la suite...
    ensuite je ne vois pas trop comment on pourrait faire autrement..

    est ce que cela fonctionne au moins???

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    ben je viens de voir ta réponse d'hier car j'étais occupé toute l'après midi et j'avais un concert le soir( ct sympa Placebo à la Cigale )

    Donc du coup je suis en train d'esayer ce que tu me proposes....
    Cela m'inspire, j'essayer juste d'avoir une confirmation de ce que j'avais compris de ton code, et a priori j'ai du comprendre à peu près correctement...

    Je te tiens au courant

    Merci beaucoup quoi qu'il arrive, tu m'auras bien aider à faire avancer le Scmilblick

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Merci beaucoup tiscars

    Ton truc marche nickel !!!!!

    Comme je voulais faire un polyline par accident j'ai rajouter un for-each sur les accidents et le tour et joué!!!!!
    Tu m'as super ouvert l'esprit sur la "logique" xsl, maintenant je peu créer et faire ce ke je veux avec les balises(enfin quasiment)!!!

    Merci !!!

  12. #12
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    heu...je t en prie
    n oublie pas la balise Resolu

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 221
    Points : 84
    Points
    84
    Par défaut
    Exact la balise résolu (tellement content ke je l'oublie...)

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

Discussions similaires

  1. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 13h26
  2. [C#] Passage de valeur d'une fenêtre à une autre
    Par groum999 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/09/2004, 14h12
  3. [XSL] Tester si la valeur est un entier dans un xml
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/07/2003, 04h35
  4. XML+XSL=SVG
    Par Replouf66 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 23/03/2003, 20h14

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