Commentaires
Pour commencer, as-tu déjà entendu parler de XML ?

Arthur, l'apprenti développeurAbsolument pas, mais tu ne m'avais pas dit que l'on verrait du HTML et CSS ?
Si, mais il faut comprendre le XML pour savoir ce qu'est le HTML. En fait, le XML c'est un langage qui a été inventé dans les années 90, avant ça il existait le GML et SGML qui ont permis de définir les premières versions du HTML. Mais le SGML et le HTML qui en dérivent ont été abandonnés au profit du xHTML, c'est à dire du HTML basé sur XML.

XML signifie eXtended Markup Language, ou en français "langage de balisage extensible".

Arthur, l'apprenti développeurÇa ne me parle pas plus en français qu'en anglais...
Langage, ce n'est pas bien compliqué, balisage, c'est parce que l'on définit les données avec des balises qui ressemblent à ça :

{"language":"application/x-httpd-php","content":"<balise>Contenu</balise>","filename":"exemple"}


Et extensible, tout simplement parce qu'il n'y a pas un nombre défini de balises, on peut définir celles que l'on souhaite selon notre besoin, et surtout, on peut définir des ensembles de balises pour créer en quelque sorte de nouveaux langages.

Arthur, l'apprenti développeurMais ça sert à quoi ?
A présenter des données dans un format facile à comprendre, pour un ordinateur en tout cas. Et surtout ces données peuvent être sur plusieurs niveaux et s'imbriquer les unes dans les autres. En fait le contenu d'une balise peut être une autre balise, on parle alors de parents et d'enfants.

{"language":"application/x-httpd-php","content":"<parent>\n\t<enfant>\n\t\tContenu enfant\n\t</enfant>\n</parent>","filename":"exemple"}


Arthur, l'apprenti développeurEt ça apporte quoi de faire plusieurs niveaux comme ça ?

À présenter des données complexes dans un format facilement lisible par un programme informatique. Imaginons qu'on te demande de faire une liste des employés de ton entreprise, et que cette liste doive être exploitable par une application. Sans le XML, tu ferais sûrement une liste dans un fichier word :


  • Prénom: Jean

  • Nom: Dupont

  • Poste: Chef de projet

  • Date de naissance: 02/03/1980


  • Prénom: Jacques

  • Nom: Dupuis

  • Poste: Ingénieur

  • Date de naissance: 15/08/1975



Arthur, l'apprenti développeurOui c'est tout à fait lisible comme ça !

Pour toi oui, mais pas pour un programme, il faudrait lui expliquer comment lire ce fichier, que chaque bloc de quatre lignes correspond à une personne, qu'il faut décomposer chaque ligne pour récupérer le type de données avant les deux points et la valeur après les deux points et qu'une ligne vide correspond à une nouvelle personne.

Arthur, l'apprenti développeurAh oui effectivement ça ne serait pas idéal.

D'autant plus que si tu changes ton format de données, par exemple pour ajouter une nouvelle information, comme la date de début de contrat, il faudra revoir la façon dont le programme lit les informations du fichier.

Arthur, l'apprenti développeurOk tu m'as convaincu, donc comment on fait du XML ?

Comme je te l'ai dit avec des balises, si on reprend les mêmes informations mises en forme en XML ça donnerait :

{"language":"application/x-httpd-php","content":"<personne>\n\t<prenom>Jean</prenom>\n\t<nom>Dupont</nom>\n\t<poste>Chef de projet</poste>\n\t<date-de-naissance>02/03/1980</date-de-naissance>\n</personne>\n<personne>\n\t<prenom>Jacques</prenom>\n\t<nom>Dupuis</nom>\n\t<poste>Ingénieur</poste>\n\t<date-de-naissance>15/08/1975</date-de-naissance>\n</personne>","filename":"exemple"}


Arthur, l'apprenti développeurEt c'est tout?

Pas tout à fait, il y a quelques petits détails en plus pour voir vraiment le XML. Tout d'abord on ne peut pas mettre une liste telle quelle dans un XML. Elle doit avoir un noeud parent pour définir ce qu'est cette liste.

{"language":"application/x-httpd-php","content":"<liste-employee>\n\t<personne>\n\t\t<prenom>Jean</prenom>\n\t\t<nom>Dupont</nom>\n\t\t<poste>Chef de projet</poste>\n\t\t<date-de-naissance>02/03/1980</date-de-naissance>\n\t</personne>\n\t<personne>\n\t\t<prenom>Jacques</prenom>\n\t\t<nom>Dupuis</nom>\n\t\t<poste>Ingénieur</poste>\n\t\t<date-de-naissance>15/08/1975</date-de-naissance>\n\t</personne>\n</liste-employee>","filename":"exemple"}


Et il faut définir une balise racine pour le xml, on pourrait très bien dire que <liste-employee< est la racine, mais pour bien te montrer la complexité possible de cette formation, je te propose plutôt que l'on mette une balise racine <entreprise> et ses informations avant la liste des employées.

{"language":"application/x-httpd-php","content":"<entreprise>\n\t<nom>Traning-dev</nom>\n\t<adresse>\n\t\t<numero>10</numero>\n\t\t<rue>place de la gare</rue>\n\t\t<code-postal>99001</code-postal>\n\t\t<ville>TrainingTown</ville>\n\t</adresse>\n\t<liste-employee>\n\t\t<personne>\n\t\t\t<prenom>Jean</prenom>\n\t\t\t<nom>Dupont</nom>\n\t\t\t<poste>Chef de projet</poste>\n\t\t\t<date-de-naissance>02/03/1980</date-de-naissance>\n\t\t</personne>\n\t\t<personne>\n\t\t\t<prenom>Jacques</prenom>\n\t\t\t<nom>Dupuis</nom>\n\t\t\t<poste>Ingénieur</poste>\n\t\t\t<date-de-naissance>15/08/1975</date-de-naissance>\n\t\t</personne>\n\t</liste-employee>\n</entreprise>","filename":"exemple"}


Voilà un XML exploitable par un programme et qui représente les données de ton entreprise. Tu noteras que j'ai indenté ce XML comme il faut.

Arthur, l'apprenti développeurIndenté ? C'est quoi ça ?
C'est le fait d'ajouter un espace ou une tabulation (en général, 4 espaces) supplémentaire entre une balise parent et une enfant. On arrive ainsi à lire plus facilement le fichier et identifier rapidement les différents niveaux de données. Prends cette habitude dès maintenant, car tu vas presque toujours indenter quand tu développes, c'est une bonne pratique indispensable à la bonne qualité du code, et pas que en XML. Certains langages vont même jusqu'à signaler des erreurs si le code est mal indenté.

Arthur, l'apprenti développeurEffectivement sans les espaces, ça serait moins facile à lire, je retiens !

Une dernière chose avant de passer au HTML, comme tu as pu le voir, le XML contient des informations, il y en a dans le nom des balises pour définir le type de données, et à l'intérieur du contenu des balises pour préciser l'information en elle-même. Les balises sont prévues pour fournir des informations au programme, et le contenu de l'information à présenter à l'utilisateur. Il existe aussi un troisième type d'information, qui est en quelque sorte du contenu, mais prévu pour le programme et non pas l'utilisateur, ce sont les attributs. On peut définir n'importe quel type d'attribut, et il suffit de le préciser dans une balise de cette façon :

{"language":"application/x-httpd-php","content":"<balise attribut=\"valeur\">Contenu</balise>","filename":"exemple"}


Arthur, l'apprenti développeurMais ça sert souvent ça ?

Bien plus que tu ne peux l'imaginer pour le moment. En reprenant l'exemple de ton entreprise, si l'utilisateur a un identifiant unique, cet identifiant peut être important pour l'application, pour autant, ce n'est pas une information que l'on va présenter à l'utilisateur, car ça ne l’intéresse pas. On pourrait donc mettre à jour le XML de cette façon :

{"language":"application/x-httpd-php","content":"<entreprise>\n\t<nom>Traning-dev</nom>\n\t<adresse>\n\t\t<numero>10</numero>\n\t\t<rue>place de la gare</rue>\n\t\t<code-postal>99001</code-postal>\n\t\t<ville>TrainingTown</ville>\n\t</adresse>\n\t<liste-employee>\n\t\t<personne id=\"123456\">\n\t\t\t<prenom>Jean</prenom>\n\t\t\t<nom>Dupont</nom>\n\t\t\t<poste>Chef de projet</poste>\n\t\t\t<date-de-naissance>02/03/1980</date-de-naissance>\n\t\t</personne>\n\t\t<personne id=\"654231\">\n\t\t\t<prenom>Jacques</prenom>\n\t\t\t<nom>Dupuis</nom>\n\t\t\t<poste>Ingénieur</poste>\n\t\t\t<date-de-naissance>15/08/1975</date-de-naissance>\n\t\t</personne>\n\t</liste-employee>\n</entreprise>","filename":"exemple"}


Arthur, l'apprenti développeurOk c'est assez simple au final, mais je ne vois pas comment on va créer un site web avec un fichier de données.
J'ai terminé cette partie
Demander de l'assistance