XML pourquoi faire ?

Résolu
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 30 mai 2006 à 10:01
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 - 30 mai 2006 à 11:41
Bonjours voila quelque temps une question qui me tarode l'esprit
j'aimerai savoir (pour savoir si sa vaut le coup que je m'y mette ou pas) a quoi sert le XML ?
Voici ma propre définition (je me trompe surement et j'espert parce que sinon je voit pas l'interet)
pour moi le XML c'est stocker des donnée sur un fichier
en gros on repart au ancienne SGBD ou les données été stocker que des fichier texte sauf qu'avec le XML elle sont "organiser"

voici la définition que je m'en fait
donc je vois pas l'interet de repartir sur des base de donnée "fichier"...

Merci de m'éguiller sur l'utilisation et l'interet du XML...
D'avance merci

9 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2006 à 11:02
Hmm lol...

Bon, Antho a donné une bonne définition (toi aussi...en partie!)

XML est bien un meta langage, déjà. Donc, c'est un langage descriptif. Il décrit des données structurées. Et il est dérivé du SGML (comme l'est HTML d'ailleurs). Ce qui implique que XML est tourné vers les "documents" : le DOM, bien connu des développeurs web (entre autre, encore...).

Donc oui, XML sert à stocker des données dans un "fichier" (au sens large du terme).

Ses avantages sont -pour moi mais pas seulement lol- multiples :
- déjà, il est indépendant de tout environnement. On peut lire, générer, utiliser du XML sur toute plateforme (et je ne parlke pas que d'ordinateurs...). Quant tu crées ta base sur mysql, pour l'utiliser sur une machine x ne connaissant pas mysql, il faudra exporter tes données de manière à ce que cette machine comprenne ces données. XML s'affranchit totalement de ça.
- il sépare en effet parfaitement la forme du fond...mais offre aussi, via XSLT par exemple, la possibilité d'être mis en forme, et de le "processer" au passage, puisque XSLT, couplé à XPath, possède des fonctions : manipulation de chaînes, de nombres, boucles, etc...
- Il faut bien comprendre que le but d'XML était (est) d'être simple, concis, descriptif, platform independant, et parlant.Il y a de multitudes de ...langages, de modules, qui s'y ajoute pour permettre de le travailler. XSL, XSLT, XSL-FO en font partie.
- Mais aussi XPath, ou XQuery : ce sont des modules permettant d'effectuer des requêtes sur un document XML (comme pour une base de données, exactement).
- il y en a bcp...mais bref, lol. Etant intégré au W3C, il a un gros avantage : un navigateur web suffit pour le visualiser, et même y effectuer des traitements (tjrs XSLT etc...). Il s'intègre parfaitement à du web, on peut le retrouver dans un document XHTML, par exemple.  Mais il va bien au-delà du web : on le retrouve de plus en plus dans les systèmes embarqués. Et pour cause : on s'affranchit de l'environnement, toujours. Faire discuter une puce GPS, un lecteur mp3, un ordinateur de bord d'une voiture...etc...devient très facile.

Bref, on pourrait discourir longuement là-dessus...
Pourquoi l'utiliser, et quand ? A toi de voir.
je vais t'expliquer pourquoi je l'ai utilisé dans certains de mes codes, ça te donnera une idée :

- classe logger : une classe qui logge des actions effectuées sur une base de données, via une interface web. Bref, je trace les utilisateurs de mon application web...ces actions, je les logge dans des fichiers xml. Pourquoi ? Simple :Je n'utilise pas de ressources de ma base de données, déjà très sollicitée! L'utilisateur fait une action qui engendre un insert into sur ma base, ok. Moi, je récupère la page, l'utilisateur, la requête, le type de requête etc...et je le fous dans un fichier XML. ces fichiers, j'ai pris le parti de les gérer ainsi : j'ai un répertoire 'logs' sur mon serveur. Des sous-répertoire ayant pour nom les id de mes utilisateurs (6, 3025, 75866 etc...), et dans ces sous-répertoire, 1 fichier log (xml) par jour. Du coup, pour visualiser mes logs, aucune requête à faire du genrse SELECT ... FROM logs WHERE user_id 6 AND date '20060530'. Par exemple. Je fais juste un appel direct au fichier : j'ouvre le fichier 'logs/6/20060530.xml'. Point barre. Et je peux faire des requêtes sur ce fichier : trier, afficher juste un type de requête, ou une page précise etc...le tout tjrs sans requêtes sur ma base de données : juste du XPath, léger et rapide.

- classe de localisation : bref, une classe de traduction , en gros. Je l'utilise bcp dans ma classe ClassDoc (documentation de classes). Le principe est simple : les traductions sont des fichiers XML. En fait j'ai 1 répetoire 'locales', et des sous répertoires pour chaque langue (anglais, français, allemand...). Dedans, les mêmes fichiers, regroupés par type : doc.xml, gui.xml, errors.xml etc...et dans ces fichier, des noeuds du genre <error_bad_file>Erreur le fichier n'est pas bon</error_bad/file>. Ca C dans le répertoire français. En anglais, j'ai le même noeud, mais le texte est en anglais...évidemment.
Après, c'est simple : selon le choix utilisateur, ma classe de localisation va juste parser le bon répertoire...et là où j'écris quelquechose dans mon appli web, j'appelle la méthode qui va lire le bon fichier XML et le bon noeud. Traduction instantannée. Pourquoi du xml ici ? Bah, pas de bdd, déjà, un parsing simple et rapide, et surtout, des fichiers TRES facile à créer pour n'importe qui! Suffit de créer le répertoire "russe", de copier les fichiers, de remplacer juste les textes (en russe), et mon appli web est localisée en russe. ET si un jour j'écris cette appli en C++...j'ai juste à réécrire ma classe de localisatiopon en C++ pour avoir ma trduction : je parserai le xml de la même manière en C++, pas besoin d'inventer un nouveau procédé.

Voilà voilà...je pourrais continuer longtemps lol...
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
30 mai 2006 à 10:10
Salut,

c'est une bonne question que tu nous poses là ;)

L'utilité que j'en trouve personnellement (juste pour les RSS de mon site) c'est de permettre au visiteur lui-même de mettre en forme le contenu, c'est à dire que tu fournis en XML une structure de base, non mise en forme, au format texte (donc compréhensible par tout). N'importe qui peut en faire n'importe quoi en le parsant (en l'analysant) à sa guise.
   
Après pour le reste heu... je laisse Malalam répondre ^^

a +

<hr size="2" width="100%" /><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
30 mai 2006 à 10:26
malalam un PRO-XML ? au mon dieu y va me taper :$ lol
malalam je présise que cette question n'est pas une critique mais juste a titre informatif ;)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
30 mai 2006 à 10:54
Bijour,

je ne sais pas ce que va dire malalam...

Mais pour moi, le but du XML n'est pas de stocker des informations (même si il peut le faire) mais de transmettre des informations dans une structure !

Le meilleur exemple de transmission d'info via XML : (X)HTML...

Les intérets :
* Théoriquement, toute structuration de données peut-être représentée en XML
* La joyeuse maniuplation en arbre (grâce à DOM)
* La transformations XSL
* ... ?

Bon effectivement, c'est pas performant en traitement, ni en taille (quoique XML supporte bien la compression).

Mais je te conseil de "t'y mettre". Car franchement c'est très très simple en première approche. Donc il serait domage de passer à coté...

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
30 mai 2006 à 11:11
oki merci c'est un peu plus clair pour moi
maintenant une question :
si on prend le SGBD mySQL pour inserer une nouvelle donnée on fait un insert into classique
la la question que je me pose
si admetons j'ai mon fichier x.xml qui est :


<titre>Titre 1</titre>
Auteur 1
<titre>Titre 2</titre>
Auteur 2



(bon déjà je tien a présisez que je ne sait meme pas si cette exemple est bon je n'ai jamais fait de XML... enfin bref)
si je doit rajouter un Titre3 et Auteur3 il faut donc "reperer" les balise pour pas les metre n'importe ou
le code pour sa doit etre assez complexe et l'on a interpreter non ?

aurai-tu un exemple d'ajout de données dynamique dans un fichier XML ?

D'avance merci
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
30 mai 2006 à 11:35
Ben tu as quasiement tout compris à XML ;)

Dans ton exemple :

    
        <titre>Titre 1</titre>
        Auteur 1
        <titre>Titre 2</titre>
        Auteur 2
    

C'est très bien, mais il y'a un petit problème de structuration

Mieux être :


    
      

            <titre>Titre 1</titre>

            Auteur 1
      
      
            <titre>Titre 2</titre>

            Auteur 2
      
   


Donc ansi l'insertion est facile :



    

      


            <titre>Titre 1</titre>


            Auteur 1

      

      


            <titre>Titre 2</titre>



            Auteur 2


      


      


            <titre>Titre ajouté</titre>



            Auteur ajouté


      

   



Est encore mieux... structure très évolutive :




    


      



            <titre>Titre 1</titre>



            Auteur 1


      


      



            <titre>Titre 2</titre>




            Auteur 2



      
   
   
      
          <nom>de Vinci</nom>
          Léonard

         
             Joconde

             Traité d'architecture
         
      
   




Bref, tu vois l'intéret du truc... ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2006 à 11:37
Bah non, c'est à ça que servent les parsers XML présents dans tous les langages.
Voir DOMDocument en php5, ou DOM en php4. Entre autres.
Des exemples, il y en a plein :-) Tu peux aller voir mon dernier code : xml menu.
En gros, là, ça pourrait donner :

<?php
$sXml = <<<XML
<?xml version="1.0" encoding="iso-8859-1"?>

   
        <titre>Titre 1</titre>
        Auteur 1
        <titre>Titre 2</titre>
        Auteur 2
   

XML;
$doc = DOMDocument::loadXML ($sXml);
$newTitre = $doc -> createElement ('titre', 'titre3');
$newAuteur = $doc -> createElement ('auteur', 'auteur3');
$bouquins = $doc -> getElementsByTagName ('bouquins');
$bouquins -> item(0) -> appendChild ($newTitre);
$bouquins -> item(0) -> appendChild ($newAuteur);
echo htmlentities ($doc -> saveXML());
?>


 
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 mai 2006 à 11:39
Et J_G a raison, lol...c'est bien mieux structuré à sa façon.
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
30 mai 2006 à 11:41
Ok merci beaucoup en faite j'ai envie de m'y mettre c'est surtout pour flash... je vous remercie tous (je met le sujet en clo)
je vais surement m'y interesser merci a tous et bonne journée
0
Rejoignez-nous