Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [XML/XSL] » Se déplacer dans les noeuds en fonction des valeurs des attributs
Login Mot de passe

4 visiteurs sur ce topic (0 membre(s), 4 invité(s) )


Auteur
Sujet : Se déplacer dans les noeuds en fonction des valeurs des attributs
Zéphyr
Master
Membre # 11215

 Avatar du membre
Lieu : Caen

Messages :
655 (0.13 par jour)


Score :

Message du 24-04-2007 @ 16:03   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,

Je cherche un moyen de me déplacer dans mon arboresence en fonction des valeurs des attributs. Par exemple comment me déplacer dans "http://tools.fr", "index.html", "longueur-titre" ?

Code :

<site nom="tools" url="http://tools.fr">
      <page adresse="index.html">
         <test nom="longueur-titre">
            <resultat id="1" j="14/02/2007" h="15:02">mptools valide groups</resultat>
            <resultat id="2" j="10/02/2007" h="15:02">mptools non valide</resultat>
         </test>
         <test nom="titre-repet-mot">
            <resultat id="3" j="14/02/2007" h="15:02">mptools valide</resultat>
            <resultat id="4" j="10/02/2007" h="15:02">mptools valide</resultat>
         </test>
         <test nom="indice-popularite">
            <resultat id="5" j="14/02/2007" h="15:02" moteur="google">mptools 4</resultat>
            <resultat id="6" j="10/02/2007" h="15:02" moteur="yahoo">mptools 3</resultat>
         </test>
      </page>
</site>



Merci d'avance pour votre aide. ;)

[message édité le 24-04-2007 @ 17:02 Par Zéphyr]

----------
Les bretons sont des gens comme les autres et n'habitent pas très loin de la France. Les bretons sont nos amis, et nous devons les respecter comme des êtres humains.
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.77 par jour)


Score :

Message du 24-04-2007 @ 16:51   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

et bien un explorarateur de fichier XML sais le faire.. nan ?

Tu veux pouvoir le faire avec quoi ? avec un explorateur standard ? Tu peux lui associer une feuille de style pour n'afficher que ecrtain renseignements .. ou alors si tu veux que ce soit dynamique, il te faudra forcément un langage de script derrière.
----------
chani_tth sur PSN ;)
- Haut de page -
Zéphyr
Master
Membre # 11215

 Avatar du membre
Lieu : Caen

Messages :
655 (0.13 par jour)


Score :

Message du 24-04-2007 @ 16:59   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Ah ouais j'ai ptet un peu vague, mais quand on est dans le truc ça parait évident. :D

J'utilise DOM et PHP, et donc j'aimerais me déplacer dans le bon noeud pour créer des fils par exemple.

----------
Les bretons sont des gens comme les autres et n'habitent pas très loin de la France. Les bretons sont nos amis, et nous devons les respecter comme des êtres humains.
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.77 par jour)


Score :

Message du 24-04-2007 @ 17:11   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Quelle version de PHP tu utilise ? si tu utilise PHP5, tu peux utiliser simple XML pour filtrer et gérer grace à PHP...

DOM est plus long à utiliser, et plus enquiquinant :D... pour pas être grossier. Si tu veux j'ais un ou deux exemple de filtre que j'utilise grâce à simple XML, je t'en ferais part si tu veux ;)
----------
chani_tth sur PSN ;)
- Haut de page -
Zéphyr
Master
Membre # 11215

 Avatar du membre
Lieu : Caen

Messages :
655 (0.13 par jour)


Score :

Message du 24-04-2007 @ 18:11   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

chani a écrit

Quelle version de PHP tu utilise ? si tu utilise PHP5, tu peux utiliser simple XML pour filtrer et gérer grace à PHP...

DOM est plus long à utiliser, et plus enquiquinant :D... pour pas être grossier. Si tu veux j'ais un ou deux exemple de filtre que j'utilise grâce à simple XML, je t'en ferais part si tu veux ;)



J'utile PHP5, et bien évidemment tes exemples m'intéressent. ;)

----------
Les bretons sont des gens comme les autres et n'habitent pas très loin de la France. Les bretons sont nos amis, et nous devons les respecter comme des êtres humains.
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.77 par jour)


Score :

Message du 25-04-2007 @ 9:23   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Alors dans un premier temps... il te faut lire le fichier XML (enfin créer une référence un objet avec ton fichier XML) :

Code :

function read_xml($path, $nof) {
      $contenu='';
      $fichier=$path.'/'.$nof.'.xml';
      $contenu=simplexml_load_file($fichier) or trigger_error('Le fichier '.$fichier.' est introuvable.', E_USER_WARNING);
      if ($contenu<>false) {
         $this->resultat=$contenu;
         return true;
      }
      else {
         return false;
      }
      
   }



Ensuite tu peux utiliser l'objet pour lui appliquer des filtres successif (enfin au moins lui demander d'afficher les noeuds dispos à certain chemin)
Code :

/*
* fonction de traitement des informations des pages
*/
function trait_page ($xml, $nro) {
   $cat='// page [@numero = '.$nro.'] /section';
   $i=0;
   foreach ($xml->xpath($cat) as $niveau) {
         
      $type=(string)$niveau['type'];      // remplissage du type de page
      $info=(string)$niveau['info'];      // récupération du type de source de données dans le cas d'un formulaire
      $source=(string)$niveau['source'];   // récupération du nom de la source de donnée.
      $cat2='// page [@numero = '.$nro.'] /section/champ';
      foreach ($niveau->xpath($cat2) as $niveau2) {
            $this->resultat2[$i]['type']=$type;         // remplissage du type de page
            $this->resultat2[$i]['info']=$info;         // remplissage du nom de la table pour une source bdd
            $this->resultat2[$i]['source']=$source;      // remplissage de la source de données
            $this->resultat2[$i]['typec']=(string)$niveau2['type'];      //remplissage du type de champs
            $this->resultat2[$i]['champ']=(string)$niveau2['chp'];      //remplissage du nom de champs
            $this->resultat2[$i]['numero']=(string)$niveau2->numero;   //remplissage du numéro de la traduction
            
            $i++;
      }
   }
       
}


Voici juste le code qui appel successivement ces deux fonctions :

Code :

$this->read_xml($rq1, $rq2);      // path, nof         
         $this->trait_page ($this->resultat, $rq3);



et voici un exemple de fichier XML que j'utilise : (page.xml)
Code :

<?xml version='1.0' standalone='yes'?>
<pages>
   <page numero='1'>
      <section type='texte' info='table' source='test'>
         <champ type='title1'>
            <numero>2</numero>
         </champ>
         <champ type='para'>
            <numero>3</numero>
         </champ>
         <champ type='title1'>
            <numero>4</numero>
         </champ>
         <champ type='para'>
            <numero>5</numero>
         </champ>
         <champ type='title2'>
            <numero>6</numero>
         </champ>
      </section>
   </page>
   <page numero='2'>
      <section type='form' info='table' source='test'>
         <champ type='form'>
            <numero>1</numero>
         </champ>
         <champ type='int'>
            <numero>1</numero>
         </champ>
         <champ type='char'>
            <numero>1</numero>
         </champ>
         <champ type='fix'>
            <numero>1</numero>
         </champ>
         <champ type='id'>
            <numero>1</numero>
         </champ>
         <champ type='bpok'>
            <numero>1</numero>
         </champ>
         <champ type='bpnok'>
            <numero>1</numero>
         </champ>
      </section>
   </page>
   <page numero='11'>
      <section type='form' info='table' source ='test'>
         <champ type='charl' chp=''>
            <numero>20</numero>
         </champ>
         <champ type='charl' chp=''>
            <numero>21</numero>
         </champ>
         <champ type='bpok'>
            <numero>22</numero>
         </champ>
         <champ type='bpnok'>
            <numero>23</numero>
         </champ>
      </section>
   </page>
   <page numero='40'>
      <section type='tableau' info='table' source='test'>
         <champ type='tableau' chp=''>
            <numero>18</numero>
         </champ>
      </section>
   </page>
</pages>



vla si t'as des questions ;)
----------
chani_tth sur PSN ;)
- Haut de page -
Zéphyr
Master
Membre # 11215

 Avatar du membre
Lieu : Caen

Messages :
655 (0.13 par jour)


Score :

Message du 25-04-2007 @ 10:18   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Finalement j'ai utilisé XPATH, parati que c'est tout con, mais je suis novice dans le domaine. :)

Code :

//Création d'un objet xpath utilisé pour naviguer dans l'arborescence du fichier xml
$xpath = new DOMXPath($docXml);

//définition du chemin xpath à parcourir dans le fichier XML
$query = "//site[@nom='$nomSite']/page[@adresse='$pageCourante']/test[@nom='$nomTest']";
$noeud = $xpath->query($query); //récupération du noeud correspondant au xpath



Mais merci quand même pour tes exemples ! Je les regarderai pour en connaître un peu plus du XML. :)

----------
Les bretons sont des gens comme les autres et n'habitent pas très loin de la France. Les bretons sont nos amis, et nous devons les respecter comme des êtres humains.
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.77 par jour)


Score :

Message du 25-04-2007 @ 14:03   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

ba j'utilise aussi xpath mais sur un objet simplexml ;)
----------
chani_tth sur PSN ;)
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.053 secondes