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 1.0] Transformation fichier XML


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Par défaut [XSLT 1.0] Transformation fichier XML
    Bonjour à tous,

    Je ne connais pas très bien le langage XSLT et malgré la lecture de quelques cours je n'arrive pas à faire ce dont j'ai besoin.

    J'ai en entrée un fichier XML formaté comme suit:

    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
    <?xml version="1.0" encoding="UTF-8"?>
        <record>
            <field name="Number">10080</field>
            <field name="Process,Progress">100</field>
            <field name="ProfileInformation,CandidateNumber">10099</field>
            <field name="ProfileInformation,Candidate,FirstName">Jerry</field>
            <field name="ProfileInformation,Candidate,LastName">SMITH</field>
            <field name="ProfileInformation,Candidate,Birthday">1977-04-27T00:00:00</field>
            <field name="ProfileInformation,Candidate,EmailAddress">jerry.smith@gmail.com</field>
            <field name="ProfileInformation,Studies,StartDate">1998-04-27T00:00:00</field>
            <field name="ProfileInformation,Studies,GraduationDate">2000-01-15T00:00:00</field>
            <field name="ProfileInformation,Studies,OtherInstitutionName">Boston College</field>
            <field name="ProfileInformation,Experiences,BeginDate">2001-01-01T00:00:00</field>
            <field name="ProfileInformation,Experiences,EndDate">2006-08-31T00:00:00</field>
            <field name="ProfileInformation,Experiences,OtherEmployerName">Renault</field>
            <field name="ProfileInformation,Experiences,OtherJobTitle">Engineer</field>
        </record>
        <record>
            <field name="Number">10021</field>
            <field name="Process,Progress">100</field>
            <field name="ProfileInformation,CandidateNumber">10100</field>
            <field name="ProfileInformation,Candidate,FirstName">John</field>
            <field name="ProfileInformation,Candidate,LastName">DOE</field>
            <field name="ProfileInformation,Candidate,Birthday">1979-04-27T00:00:00</field>
            <field name="ProfileInformation,Candidate,EmailAddress">john.doe@gmail.com</field>
            <field name="ProfileInformation,Studies,StartDate">1997-04-27T00:00:00</field>
            <field name="ProfileInformation,Studies,GraduationDate">2000-01-15T00:00:00</field>
            <field name="ProfileInformation,Studies,OtherInstitutionName">Sorbonne Graduate Business School Université Paris I</field>
            <field name="ProfileInformation,Experiences,BeginDate">2000-01-01T00:00:00</field>
            <field name="ProfileInformation,Experiences,EndDate">2004-08-31T00:00:00</field>
            <field name="ProfileInformation,Experiences,OtherEmployerName">Self employee</field>
            <field name="ProfileInformation,Experiences,OtherJobTitle">Adviser</field>
        </record>
        <record>
            <field name="Number">10021</field>
            <field name="Process,Progress">100</field>
            <field name="ProfileInformation,CandidateNumber">10100</field>
            <field name="ProfileInformation,Candidate,FirstName">John</field>
            <field name="ProfileInformation,Candidate,LastName">DOE</field>
            <field name="ProfileInformation,Candidate,Birthday"1979-04-27T00:00:00/field>
            <field name="ProfileInformation,Candidate,EmailAddress">john.doe@gmail.com</field>
            <field name="ProfileInformation,Studies,StartDate">1997-04-27T00:00:00</field>
            <field name="ProfileInformation,Studies,GraduationDate">2000-01-15T00:00:00</field>
            <field name="ProfileInformation,Studies,OtherInstitutionName">Sorbonne Graduate Business School Université Paris I</field>
            <field name="ProfileInformation,Experiences,BeginDate">2004-09-01T00:00:00</field>
            <field name="ProfileInformation,Experiences,EndDate"/>
            <field name="ProfileInformation,Experiences,OtherEmployerName">Etat</field>
            <field name="ProfileInformation,Experiences,OtherJobTitle">Fonctionnaire</field>
        </record>
    Potentiellement, on peut avoir plusieurs candidats différents dans le fichier XML d'entrée et pour chaque candidats, on a plusieurs "Studies" et "experiences" mais le fichier n'est pas très bien formatté et les ligne de candidates, studies et Experiences peuvent être répétées.

    Je voudrais faire une transformation de ce fichier selon les règles de gestion suivantes:
    - Enlever les deux 1er attributs de "record" qui sont inutiles
    - Créer une balise "CANDIDATES", renommer la balise record en CANDIDATE et y insérer les infos correspondantes
    - Pour chaque candidat, insérer autant de lignes de studies qu'il y a potentiellement dans le fichier XML pour le candidat (clé candidat= Candidatenumber, clé studies = StartDate)
    - Pour chaque candidat, insérer autant de lignes de Experiences qu'il y a potentiellement dans le fichier XML pour le candidat (clé candidat= Candidatenumber, clé Experiences= BeginDate)
    Sachant que le fichier XML peut être anarchique: désordre dans l'ordre des candidats, doublons sur le candidatenumber, expériences pouvant être vide puis renseignée plus loin pour un candidat donné etc...

    Donc en sortie pour le fichier XML ci dessus, on aurait quelquechose comme:
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <CANDIDATES>
       <CANDIDATE>
          <CANDIDATENUMBER>10099</CANDIDATENUMBER>
          <FIRSTNAME>Jerry</FIRSTNAME>
          <LASTNAME>SMITH</LASTNAME>
          <BIRTHDAY>1977-04-27T00:00:00</BIRTHDAY>
          <EMAILADDRESS>jerry.smith@gmail.com</EMAILADDRESS>
          <STUDIES>
             <STUDY>
                <STARTDATE>1998-04-27T00:00:00</STARTDATE>
                <GRADUATIONDATE>2000-01-15T00:00:00</GRADUATIONDATE>
                <OTHERINSTITUTIONNAME>Boston College</OTHERINSTITUTIONNAME>
             </STUDY>
          </STUDIES>
          <EXPERIENCES>
             <EXPERIENCE>
                <BEGINDATE>2001-01-01T00:00:00</BEGINDATE>
                <ENDDATE>2003-01-01T00:00:00</ENDDATE>
                <OTHEREMPLOYERNAME>Renault</OTHEREMPLOYERNAME>
                <OTHERJOBTITLE>Engineer</OTHERJOBTITLE>
             </EXPERIENCE>
          </EXPERIENCES>
       </CANDIDATE>
       <CANDIDATE>
          <CANDIDATENUMBER>10100</CANDIDATENUMBER>
          <FIRSTNAME>John</FIRSTNAME>
          <LASTNAME>DOE</LASTNAME>
          <BIRTHDAY>1979-04-27T00:00:00</BIRTHDAY>
          <EMAILADDRESS>john.doe@gmail.com</EMAILADDRESS>
          <STUDIES>
             <STUDY>
                <STARTDATE>1997-04-27T00:00:00</STARTDATE>
                <GRADUATIONDATE>2000-01-15T00:00:00</GRADUATIONDATE>
                <OTHERINSTITUTIONNAME>Sorbonne Graduate Business School Université Paris I</OTHERINSTITUTIONNAME>
             </STUDY>
          </STUDIES>
          <EXPERIENCES>
             <EXPERIENCE>
                <BEGINDATE>2000-01-01T00:00:00</BEGINDATE>
                <ENDDATE>2004-08-31T00:00:00</ENDDATE>
                <OTHEREMPLOYERNAME>Self employee</OTHEREMPLOYERNAME>
                <OTHERJOBTITLE>Adviser</OTHERJOBTITLE>
             </EXPERIENCE>
             <EXPERIENCE>
                <BEGINDATE>2004-09-01T00:00:00</BEGINDATE>
                <ENDDATE/>
                <OTHEREMPLOYERNAME>Etat</OTHEREMPLOYERNAME>
                <OTHERJOBTITLE>Fonctionnaire</OTHERJOBTITLE>
             </EXPERIENCE>
          </EXPERIENCES>
       </CANDIDATE>
    </CANDIDATES>
    Merci d'avance pour l'aide apportée.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    XSLT n'est pas vraiment prévu pour réparer les fichiers cassés, la logique étant que des fichiers mal fichus, il vaudrait mieux ne pas en faire et donc ne pas en avoir.
    Ça va donc sembler assez compliqué de faire ça. C'est normal : c'est pas fait pour.

    Mais bon, bref.

    Est-ce que tu peux nous montrer où tu en es pour l'instant, ce que tu as déjà essayé, ce qui te pose problème pour le moment, etc.
    "Je n'arrive pas à le faire" ça ne nous renseigne pas vraiment.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Par défaut
    Je passe le sujet à résolu car finalement la structure d'entrée du fichier a évolué et les lignes de experiences et studies sont dans d'autres fichiers.

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

Discussions similaires

  1. [XSLT] requete dans un fichier xml
    Par tourearc dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/06/2007, 11h21
  2. [XSLT] Restructuration d'un fichier XML
    Par biggione dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 13/06/2007, 10h21
  3. [XSLT] transfo d'un fichier XML en plusieurs fichiers XML
    Par doudou_rennes dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2006, 12h01
  4. [XSLT] Comment lier un fichier XML et XSLT
    Par bitou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/08/2006, 15h35
  5. XSLT traiter recursivement un fichier xml
    Par davelo dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/02/2006, 10h52

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