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 csv et lignes vides


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [XSLT] xml vers csv et lignes vides
    Bonjour,

    J'ai un xml avec des villes classées par pays. J'utilise xsl pour extraire toutes les villes (et les informations associées) d'un pays particulier et mettre en forme un fichier csv.
    Dans mon csv, je retrouve bien ce que je veux, mais j'ai des lignes vides pour les villes qui ne correspondent pas au pays attendu (INN) .

    Le xml se présente comme ça :

    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
    <data center="test">
        <observations date="20100505">
            <station id="48324">
                <name>THOEN</name>
                <source>
                    <center>VTBB</center>
                </source>
                <location>
                    <latitude unit="DD">17.63334</latitude>
                    <longitude unit="DD">99.25</longitude>
                    <elevation unit="m">192</elevation>
                    <country>TH</country>
                </location>
           </station>
           <station id="48624">
                <name>DELHI</name>
                <source>
                    <center>VTBB</center>
                </source>
                <location>
                    <latitude unit="DD">100.6</latitude>
                    <longitude unit="DD">99.25</longitude>
                    <elevation unit="m">200</elevation>
                    <country>INN</country>
                </location>
             </station>
             </station>
             ....
             </station>
           </observations>
    </data>
    Et voici la feuille de style :
    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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="text" encoding="iso-8859-1"/>
     
      <xsl:param name="delim" select="string(';')" />
     
      <xsl:template match="/">
        <xsl:text>Id;Name-EN;Lat;Lon;</xsl:text>
        <xsl:apply-templates select="/data/observations" />
      </xsl:template>
      <xsl:template match="station">
     
    	<xsl:choose>
            <xsl:when test="country='INN'" > 
    			<xsl:value-of select="@id" />
    			<xsl:value-of select="$delim" />
    			<xsl:value-of select="name" />
    			<xsl:value-of select="$delim" />
    			<xsl:value-of select="location/latitude" />
    			<xsl:value-of select="$delim" />
    			<xsl:value-of select="location/longitude" />
    			<xsl:value-of select="$delim" />
    		</xsl:when> 
    	</xsl:choose>  
      </xsl:template>
    </xsl:stylesheet>
    Merci pour votre

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Des sauts de ligne parasites sont effectivement à déplorer selon les moteurs. Et n'y a-t'il pas un saut de ligne avant le choose ?

    Plutôt que d'utiliser un choose, je passerais par un template avec une condition pour éliminer les indésirables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="station[location/country != 'INN']" priority="1"/>
    <xsl:template match="station" priority="0">
      <xsl:value-of select="concat(@id, $delim, name,...)"/>
      <xsl:text>
    </xsl:text>
    </xsl:template>
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

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

Discussions similaires

  1. [XSLT] XML vers CSV a l'aide d'un XSL
    Par agougeon dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 02/05/2007, 14h08
  2. [XSLT] XML vers XML
    Par cydream dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/04/2007, 17h45
  3. [XSLT] XML vers HTML
    Par SONY30 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 05/04/2007, 08h54
  4. [XSLT]XML vers tableau html
    Par lcdDEV dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/10/2006, 16h55
  5. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 12h54

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