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 :

Récupérer la valeur par tri de dates [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Récupérer la valeur par tri de dates
    Bonjour à tous,

    Je suis débutant en ce qui concerne l'utilisation d'XPATH en php et je n'arrive pas à faire ce que je veux.

    Mon fichier 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
     
     
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <tif:OI xmlns:tif="http://www.tourinfrance.net/Tourinfrance3/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ms="http://microsoft.com/wsdl/types/" xmlns:cs="http://www.enjoyconstellation.com" xmlns:utils="dms-utils" xmlns:media="media-utils">
    <tif:Periodes>
    <tif:DetailPeriode xml:lang="fr" libelle="Manifestation" type="09.01.05">
    <tif:Nom xml:lang="fr">PORTES-OUVERTES D'AUTOMNE A TERRE BLANCHE</tif:Nom> 
    <tif:Dates>
    <tif:DetailDates>
    <tif:DateDebut>2017-10-28</tif:DateDebut> 
    <tif:DateFin>2017-10-28</tif:DateFin>
    <tif:Jours> 
    <tif:DetailJours xml:lang="fr" libelle="Ouverture" type="09.03.02">
    <tif:Jour xml:lang="fr" libelle="Samedi" lib_jour="09.02.07">
    <tif:Horaires><tif:HoraireDebut>14:00</tif:HoraireDebut> <tif:HoraireFin>18:00</tif:HoraireFin> </tif:Horaires> 
    <tif:Horaires><tif:HoraireDebut>10:00</tif:HoraireDebut> <tif:HoraireFin>12:00</tif:HoraireFin> </tif:Horaires> 
    </tif:Jour>
    </tif:DetailJours>
    </tif:Jours> 
    </tif:DetailDates>
    </tif:Dates>
    </tif:DetailPeriode>
    <tif:DetailPeriode xml:lang="fr" libelle="Manifestation" type="09.01.05">
    <tif:Nom xml:lang="fr">Les rendez-vous gourmands à terre blanche</tif:Nom>
    <tif:Dates>
    <tif:DetailDates>
    <tif:DateDebut>2018-09-01</tif:DateDebut> 
    <tif:DateFin>2018-10-01</tif:DateFin> 
    <tif:Jours> 
    <tif:DetailJours xml:lang="fr" libelle="Ouverture" type="09.03.02">
    <tif:Jour xml:lang="fr" libelle="Jeudi" lib_jour="09.02.05">
    <tif:Horaires><tif:HoraireDebut>09:00</tif:HoraireDebut> 
    </tif:Horaires>
    </tif:Jour> 
    </tif:DetailJours>
    </tif:Jours> 
    </tif:DetailDates>
    </tif:Dates>
    </tif:DetailPeriode>
    </tif:Periodes>
    </tif:OI>
    Et mon bout de php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    		$xml = simplexml_load_file('impt/'.$files[$x]);
    		$xml->registerXPathNamespace('c', 'http://www.tourinfrance.net/Tourinfrance3/');
     
    /* TITRE */
    			$dctitle = $xml->xpath('/tif:OI/tif:DublinCore/dc:title'); 
     
    /* DATE DEBUT & FIN */
    			$DateDebut = $xml->xpath('/tif:OI/tif:Periodes/tif:DetailPeriode/tif:Dates/tif:DetailDates/tif:DateDebut');
    			$DateFin = $xml->xpath('/tif:OI/tif:Periodes/tif:DetailPeriode/tif:Dates/tif:DetailDates/tif:DateFin');

    Comme vous l'aurez compris, le but est de récupérer les bonnes dates (en l’occurrence celles de 2018) et le "NOM" correspondant

    Merci !

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    concernant le XPATH pur, une requête qui récupérerai les noms en fonction de la date début et fin pourrait être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //tif:Nom[../tif:Dates/tif:DetailDates/tif:DateDebut[contains(.,'2018')] and ../tif:Dates/tif:DetailDates/tif:DateFin[contains(.,'2018')]]
    Ensuite, plus qu'à utiliser DOMXPath en PHP pour l'executer !
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  3. #3
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci pour la réponse qui fonctionne en direct mais pour le traduire en PHP je n'arrive pas à la faire fonctionner :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /* DATE DEBUT & FIN */
    			$xpath = new DOMXpath($files[$x]); ou $xpath = new DOMXpath($xml);
     
    			$DateDebut = $xpath->query("//tif:Dates/tif:DetailDates/tif:DateDebut[contains(.,'2018')]");
    			$DateFin = $xpath->query("//tif:Dates/tif:DetailDates/tif:DateFin[contains(.,'2018')]");

    Gros Merci !

  4. #4
    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
    SimpleXML supporte xpath bien. Mais le reste, on doit le faire avec plus de rigueur.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $xml = simplexml_load_file('impt/'.$files[$x]);
    $xml->registerXPathNamespace('tif', 'http://www.tourinfrance.net/Tourinfrance3/');
     
    $DateDebutList=$xml->xpath("//tif:DateDebut[contains(., '2018')]");
    foreach($DateDebutList as $node) {
        $DateDebut=$node;
        $resultat=$node->xpath("following-sibling::tif:DateFin");
        $DateFin=$resultat===false?'DateFin pas trouvé':$resultat[0];
        $resultat=$node->xpath("ancestor::tif:DetailPeriode/tif:Nom");
        $Nom=$resultat===false?'Nom pas trouvé':$resultat[0];
     
        echo "($Nom, $DateDebut, $DateFin)\n";
    }

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 09/07/2008, 18h58
  2. récupérer une valeur par $_POST et/ou $_Get
    Par akara dans le forum Langage
    Réponses: 14
    Dernier message: 06/06/2007, 13h15
  3. Comment récupérer la valeur par défaut d'un type ?
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 27/02/2007, 10h30
  4. Trigger : Récupérer la valeur par défaut d'une colonne
    Par mcspr2002 dans le forum Administration
    Réponses: 5
    Dernier message: 12/01/2007, 13h53
  5. Probleme de valeurs par defaut de dates!
    Par kenny49 dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/06/2006, 11h39

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