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 :

[XSLT] Xml vers SVG


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut [XSLT] Xml vers SVG
    Bonjour j'ai le fichier xml ci-dessous
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <public_tdt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     
    <tdt>
    <id>22393</id>
    <dateheure>2004-12-26T00:58:50</dateheure>
    <profondeur>10</profondeur>
    <magnitude>8.9</magnitude>
    <latitude>3.3</latitude>
    <longitude>95.78</longitude>
    <pt>(95.7799987792969,3.29999995231628)</pt>
    <geom>0101000020E610000052B81E85EBF157406666666666660A40</geom>
    </tdt>
    <tdt>

    et je voudrais obtenir un svg représentant les latitudes et longitudes de mes tdt, comment le faire s'il vous plait?

    Merci d'avance pour vos reponses.

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut Transformation xml vers svg avec xslt
    Bonjour,

    tu as le fichier xml, il te reste donc à trouver un programme, comme saxon par exemple, et ta feuille de style toSvg.xsl.

    Ton fichier xsl devrait ressembler à qlqch 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?xml version="1.0"?>
     
    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output method="xml" indent="yes"
        doctype-public="-//W3C//DTD SVG 20010904//EN"
        doctype-system="~http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"/>
     
      <xsl:template match="/">
        <svg width="XXX" height="YYY">
          <xsl:apply-templates/>
        </svg>
      </xsl:template>
     
      <xsl:template match="tdt">
        <g><xsl:apply-templates/></g>
     </xsl:template>
     
     <xsl:template match="latitude | longitude">   
            <text><xsl:value-of select="."/></text>       
     </xsl:template>
     
    </xsl:stylesheet>
    Ensuite :

    saxon source.xml toSvg.xsl > out.svg

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xml
    Merci polymorphisme

    Mais je voudrais avoir une représentation des points de chaque tdt sur une carte du monde par exemple
    Je m'explique,
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="latitude | longitude">
    	<xsl:element name="svg:circle">
    		<xsl:attribute name="cx">
    		<xsl:number value="@longitude*2+360" />
    		</xsl:attribute>
    		<xsl:attribute name="cy">
    			<xsl:number value="@latitude*2+180" />
    		</xsl:attribute>
    mai en faisant ceci j'ai
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <svg:circle xmlns:svg="http://www.w3.org/2000/svg" cx="NaN" cy="NaN" r="10"

    cx et cy ne recupere aucune valeur
    Merci d'avance pour l'aide que vous pouvez me donner

  4. #4
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut
    A cette balise :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <svg:circle xmlns:svg="http://www.w3.org/2000/svg" cx="NaN" cy="NaN" r="10"

    tu peux supprimer l'espace de nom http://www.w3.org/2000/svg en ajoutant le couple attribut/valeur exclude-result-prefixes="svg" à ta balise xsl:stylesheet,
    ca fera plus propre et c'est plus lisible

    ensuite, avec <xsl:number value="@longitude*2+360" />, tu demande la valeur numérique de l'attribut longitude du noeud courant, à savoir longitude ou latitude. Ces noeuds n'ont pas d'attributs, donc ton processeur xslt retourne la valeur NotANumber. Le processeur ne fait que ce qu'on l'on lui demande (comme c'est enrageant

    Dans ta template avec le XPath "latitude | longitude", la valeur du noeud courant est ".". Essaye la template suivante :

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <xsl:template match="latitude | longitude">
    <xsl:element name="svg:circle">
    <xsl:attribute name="latitude ">
    <xsl:value-of value="." />
    </xsl:attribute>
    <xsl:attribute name="longitude">
    <xsl:value-of value="." />
    </xsl:attribute>
    ...
    <xsl:template>

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    en faisant comme proposé j'ai cette erreur: unexpected attribute "value"

    sur la même lancé comment puis je superposer ces informations sur la carte du monde s'il vous plait toujours avec le fichier xsl?

  6. #6
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut Une faute de syntaxe ...
    Oui, j'ai fait une faute de syntaxe

    Il faut remplacer <xsl:value-of value="." /> par
    <xsl:value-of select="."/>

    Pour mettre une image, voici un exemple :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      <image x="200" y="200" width="100px" height="100px"
             xlink:href="myimage.png">
        <title>My image</title>
      </image>


    Les spécifications du svg :
    http://www.w3.org/Graphics/SVG/

    Les spécifications de xslt
    http://www.w3.org/Style/XSL/

    Et des exemples :
    http://www.w3schools.com/svg/svg_examples.asp
    http://www.carto.net/svg/samples/xslt/

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    merci beaucoup polymorphisme ca marche!!!!!!!!!!!!!!!!!MERCI MERCI

    Pour l'image je me suis mal exprimée, je voudrais superposer ces points sur la carte du monde par exemple que j'ai au format jpg, il faudrait donc que je la charge, (je ne sais pas comment le faire) et superpose mes points aux bonnes positions aussi.
    Comment le faire? Merci d'avance pour tout!

  8. #8
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut Image de fonds
    Cela fait un moment que je n'ai pas fait de Svg,

    mais il me semble que si le document Svg contient une balise image suivie
    de balises svg:circle, alors les cercles viennent se superposés à l'image.

    Le format jpg est pris en charge par svg. . Il n'y a pas de notion de charge en svg.

    Pour afficher tes points aux bons endroits sur ta carte du monde, tu fait un calcul d'échelle pour passer des coordonnées géographiques aux coordonnées locales (je veux dire les coordonnées de ton image). Ensuite, il faut faire un changement de repère pour passer du repère géographique au repère local.

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    Bonjour Polymorphisme

    tu peux m'expliquer stp ceci:

    Pour afficher tes points aux bons endroits sur ta carte du monde, tu fait un calcul d'échelle pour passer des coordonnées géographiques aux coordonnées locales (je veux dire les coordonnées de ton image). Ensuite, il faut faire un changement de repère pour passer du repère géographique au repère local.

    J'ai pas très bien compris
    Merci

  10. #10
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut On continu alors
    Bonjour,

    oui je n'ai pas forcement les bons mots pour expliquer

    Le changement de système de coordonnées.

    Dans ton fichier xml, les données latitude et longitude sont exprimées dans le système de coordonnées géographiques dans lequel l'origine est l'intersection du méridien de Greenwich et de l'équateur. L'unité de mesure est le degré. voir http://fr.wikipedia.org/wiki/Coordon...%A9ographiques

    Dans l'image svg, les données latitudes et longitudes sont exprimées dans le système de coordonnées initial dont l'origine est située en haut à gauche de l'image svg. L'unité de mesure est le pixel.

    Il est donc clair que pour passer du système de coordonnées géographique au système de coordonnées initial, on fait :
    -- changement de repère soit une transformation (translation, rotation).
    -- changement d'unité soit un calcul d'échelle.

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    Merci polymorphisme, j'ai bien compris et ca marche les points sont bien reparti dans mon objet rectangle rect

    <svg:rect x="0" y="0" width="1200px" height="1200px"

    le soucis c'est que mon image

    <svg:image width="1200px" height="1200px"

    n'occupe pas tout le rectangle malgrè le fait que je leur ai donner les memes dimensions width="1200px" height="1200px" dont mes points ne sont pas a la bonne position sur l'image

    A quoi cela peut il etre du? Merci!

  12. #12
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    se pourrait il que cela soit du au fait que les bords ne soit peut etre pas de coordonnées -180/-90? Si c'est le cas y'a t'il une carte telechargeable qui peut satisfaire cela?
    Merci

  13. #13
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut la suite
    pas façile à dire comme ca.

    Ton image est-elle à la bonne dimension ?
    N'y a t-il pas un caractère espace qui "traine" dans ton fichier xml ou ta feuille de style xslt ?

    Ce serais plus façile en ayant les sources des fichiers ...

    Après c'est le genre de choses qui ont été faites depuis longtemps et de façon relativement fiable . Il existe des maps monde normées pour dessiner des points. C'est simple et efficace.

  14. #14
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    Voici le code en principe je voudrais que l'image remplisse totalement mon objet rectangle

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <svg:rect x="0" y="0" width="1200px" height="1200px"
    style="stroke:#000000; stroke-width:10; fill:#ffffff"/>
     <svg:image x="0" y="0"  width="1200px" height="1200px" xlink:href="photo-carte-du-monde.jpg" />

    mais c'est pas le cas
    S'il te plait quels sont ces maps monde normées pour dessiner des points? Ou peut on les avoir? Merci

  15. #15
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut xml xlst svg
    Les spécifications svg disent :
    'stroke-width'
    Valeur : <longueur> | inherit vf.
    <longueur> L'épaisseur du liseré sur l'objet courant. Si on utilise un pourcentage, la valeur représente un pourcentage de la zone de visualisation courante.

    Essai en suprimant la valeur stroke-width mais je ne saurais pas vraiment dire si cela vient de là. Tu peux aussi simplifier ton style.

    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <svg:rect x="0" y="0" width="1200px" height="1200px"
    style="stroke:#000; stroke-width:0; fill:#fff"/>

    Des cartes : en fait il s'agit de trouver la bonne carte
    http://www.ngdc.noaa.gov/ngdcinfo/onlineaccess.html
    http://www.ngdc.noaa.gov/mgg/topo/globe.html

  16. #16
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 22
    Points : 11
    Points
    11
    Par défaut xml à svg via xsl
    je crois que c'est bon cette fois ci, j'ai joué sur la taille de l'image comme tu me l'avais proposé.

    Merci beaucoup pour ton aide j'ai enfin pu terminer avec!

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

Discussions similaires

  1. [XSLT] XML vers XML
    Par cydream dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/04/2007, 18h45
  2. [XSLT] XML vers HTML
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/04/2007, 09h54
  3. [XSLT] GraphML vers SVG
    Par Nyphel dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/02/2007, 01h52
  4. [XSLT]XML vers tableau html
    Par lcdDEV dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/10/2006, 17h55
  5. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 13h54

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