Formateur et validateur HTML / XML

Collez du HTML ou du XML et récupérez-le proprement indenté, avec les erreurs de bonne formation (XML) ou les avertissements de balises non fermées (HTML) signalés.

1 244 vues

Comment ça fonctionne

Le formateur parcourt votre balisage et suit la profondeur d'imbrication au fur et à mesure : chaque balise ouvrante fait monter le compteur de profondeur d'un niveau, chaque balise fermante correspondante le fait redescendre. Chaque ligne de sortie reçoit un nombre d'unités d'indentation proportionnel à sa profondeur actuelle — une balise à un niveau de profondeur reçoit une unité d'indentation, une balise à quatre niveaux de profondeur en reçoit quatre, et ainsi de suite. Les nœuds de texte, les commentaires et les attributs héritent de la profondeur de l'élément qui les contient, de sorte que le résultat final reflète visuellement la structure arborescente réelle du document au lieu d'un mur de texte ininterrompu.

Par exemple, une ligne unique compacte comme <ul><li>A</li><li>B</li></ul> revient sous la forme <ul> au niveau supérieur, avec <li>A</li> et <li>B</li> chacun mis en retrait d'un niveau, et la balise fermante </ul> revenue au niveau supérieur — trois lignes au lieu d'une, et la profondeur de chacune immédiatement lisible à partir de sa seule indentation. Les éléments vides comme <br> ou <img> n'augmentent jamais le compteur de profondeur, puisqu'ils n'ont pas d'enfants à imbriquer.

Bon à savoir

Choisissez le mode XML et l'analyseur est strict : toute violation de bonne formation — une balise non fermée, une imbrication incorrecte, un caractère invalide — est signalée avec un message d'erreur précis au lieu d'être corrigée silencieusement. Choisissez le mode HTML et l'outil exécute plutôt une vérification d'équilibre des balises au mieux, car les navigateurs eux-mêmes analysent le HTML avec souplesse et il n'existe pas d'état « invalide » strict équivalent à détecter. Cette différence reflète un vrai écart entre les deux formats : la spécification XML exige qu'un document soit bien formé ou soit rejeté purement et simplement, sans terrain d'entente, alors que le HTML5 a été délibérément conçu pour que de petites erreurs de rédaction — comme une balise fermante oubliée — ne cassent pas la page. Cette tradition permissive explique aussi pourquoi <br/> est obligatoire en XML alors que <br> et <br/> sont tous deux valides et interchangeables en HTML.

Cela dépasse largement le simple nettoyage d'un balisage écrit à la main. Du HTML minifié récupéré depuis une page en ligne, une réponse d'API XML renvoyée sur une seule ligne dense, ou un fichier de configuration exporté sans aucune mise en forme — tous deviennent bien plus lisibles, et il devient bien plus facile d'y repérer une balise mal placée, une fois l'indentation basée sur la profondeur appliquée. Comme l'indentation est recalculée à partir de la structure analysée plutôt que copiée depuis l'entrée, le résultat est cohérent quelle que soit l'incohérence de l'espacement d'origine.

Questions fréquentes

Pourquoi le mode XML détecte-t-il des erreurs que le mode HTML manque ?

Le XML possède une spécification stricte de bonne formation — l'analyseur XML du navigateur rejette tout ce qui l'enfreint. L'analyse HTML est délibérément tolérante (un objectif de conception essentiel, pour que le web ne casse pas à cause de petites erreurs), il n'existe donc pas d'erreur stricte équivalente — cet outil effectue plutôt une vérification d'équilibre des balises au mieux pour le HTML.

Comment l'outil décide-t-il du niveau d'indentation de chaque ligne ?

Il suit la profondeur d'imbrication au fur et à mesure de l'analyse : ouvrir une balise augmente la profondeur d'un, fermer une balise la diminue d'un, et chaque ligne est indentée d'une quantité proportionnelle à sa profondeur à ce moment-là. Un élément situé à trois niveaux de profondeur dans l'arbre reçoit trois unités d'indentation, quelle que soit la longueur des balises qui l'entourent.

Pourquoi <br/> est-il obligatoire en XML mais facultatif en HTML ?

Le XML n'a pas de notion intégrée d'élément « vide » — chaque balise doit être explicitement fermée, soit par une balise fermante séparée, soit par la barre oblique auto-fermante, sinon le document n'est pas bien formé. Le HTML5 définit à la place une liste fixe d'éléments vides (br, img, input, hr, et d'autres) que les navigateurs savent déjà ne jamais prendre d'enfants, de sorte que <code>&lt;br&gt;</code> et <code>&lt;br/&gt;</code> sont analysés de façon identique.

Le formatage modifie-t-il mon contenu ?

Non — seuls les espaces et l'indentation changent. Les balises, attributs, textes et commentaires sont préservés exactement (les valeurs d'attributs sont ré-échappées par sécurité, ce qui ne peut changer que les caractères de guillemets, jamais la valeur elle-même).

Est-ce que cela fonctionnera sur un document profondément imbriqué ou minifié ?

Oui — l'approche basée sur le suivi de la profondeur ne se soucie pas de la façon dont l'entrée a été formatée à l'origine ni de sa profondeur d'imbrication ; un fichier minifié sur une seule ligne et un fichier indenté à la main de façon désordonnée produisent le même résultat propre, car l'indentation est recalculée à partir de la structure des balises elle-même plutôt que préservée depuis l'entrée.

Commentaires

Pas encore de commentaires — soyez le premier à en écrire un !

Outils similaires