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 :

XML > XSL : Un casse-tête avec les variables


Sujet :

XSL/XSLT/XPATH XML

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut XML > XSL : Un casse-tête avec les variables
    Bonjour,

    Je suis novice dans le language xml. Apres des heures de recherche sur les differentes discussions de ce forum, je ne trouve pas solution a mon problème:

    J'exploite un file XML qui n'est pas modifiable, j'utilise pour cela le language XSL pour transformer les balises et je bloque sur la variable suivante:

    XML ORIGINAL
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Booking>
    <Flight>
    <TraDepCity>ROMA FIUMICINO</TraDepCity>
    <TraArrCity>CASABLANCA</TraArrCity>
    </Flight>
    <Flight>
    <TraDepCity>CASABLANCA</TraDepCity>
    <TraArrCity>ROMA FIUMICINO</TraArrCity>
    </Flight>
    </Booking>
    RESULTAT SOUHAITE:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <Booking>
    <Flight1>
    <TraDepCity>ROMA FIUMICINO</TraDepCity>
    <TraArrCity>CASABLANCA</TraArrCity>
    </Flight1>
    <Flight2>
    <TraDepCity>CASABLANCA</TraDepCity>
    <TraArrCity>ROMA FIUMICINO</TraArrCity>
    </Flight2>
    </Booking>
    Sachant que le file xml est variable. Il peut il y avoir plus de 2 <Flight>.

    Merci d'avance pour votre aide.

    Bonne soiree a tous !

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je suis novice dans le language xml.
    Soit. C'est pour ça que je dirais le xml résultant souhâité est bien inférieur comme conception que le xml original. Il posera des problèmes de maintenance et d'autres.

    Si vous voulez le faire au moins comme une exercise d'apprentissage, voici une façon de le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="Flight">
        <xsl:element name="{concat(name(), count(preceding-sibling::Flight)+1)}">
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Tsuji,

    Un grand merci pour votre réponse. Vous avez raison je ne pense qu'il soit une bonne idée de renommer les balises. J'ai essayé d'utiliser la formule que vous m'avez suggéré, mais sans succes
    En fait, j'ai besoin de faire une importation dans une base de donnée. Je dois donc faire correspondre chaque balise a des champs uniques.
    Comment puis-je faire pour distinguer les balises sachant quelles ont le meme nom? J'imagine qu'il faut utiliser les fonctions <xsl:choose>, <xsl:if> <xsl:when>, mais je n'arrive pas a trouver la solution. Sachant que le file xml original peut contenir 2 balises <Flight> mais aussi 9 balises <Flight> par exemple.
    Merci d'avance pour votre précieuse aide.
    Bonne soirée

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Bonjour,

    il suffit d'utiliser leur position. La première balise rencontrée n'est pas la deuxième ni la troisième ni rien d'autre. C'est la première. La seconde balise rencontrée n'est pas la première ni la troisième ni autre chose. C'est la seconde. Et ainsi de suite.

    La plupart des formats fonctionnent comme cela, mettant les choses les unes à la suite des autres, et laissant les ordinateurs s'occuper de nous les présenter dans le même ordre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XSL-FO][FOP] Pb avec les includes
    Par manube dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/04/2008, 12h16
  2. [Cookies] problème d'en-tête avec les cookies
    Par weldata dans le forum Langage
    Réponses: 1
    Dernier message: 18/05/2007, 22h28
  3. [Dates] Casse-tête avec un problème de date
    Par Adrien93 dans le forum Langage
    Réponses: 2
    Dernier message: 13/11/2006, 14h20
  4. casse-tête sur les adresses (classe C et A)
    Par HuZimA dans le forum Protocoles
    Réponses: 7
    Dernier message: 27/07/2006, 13h05
  5. Casse tête avec SQl*Loader
    Par bellout dans le forum SQL
    Réponses: 5
    Dernier message: 14/06/2006, 17h59

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