Formattatore e Validatore HTML / XML

Incolla HTML o XML e ottienilo perfettamente indentato, con errori di buona formazione (XML) o avvisi di tag non chiusi (HTML) segnalati.

1.242 visualizzazioni

Come Funziona

Il formattatore percorre il tuo markup e traccia la profondità di annidamento man mano che procede: ogni tag di apertura spinge il contatore di profondità un livello più in alto, ogni tag di chiusura corrispondente lo riporta un livello più in basso. Ogni riga di output riceve un numero di unità di indentazione iniziali proporzionale alla sua profondità corrente — un tag annidato di un livello riceve un'unità di indentazione, un tag annidato di quattro livelli ne riceve quattro, e così via. I nodi di testo, i commenti e gli attributi ereditano la profondità dell'elemento che li contiene, cosicché il risultato finale rispecchia visivamente la struttura ad albero effettiva del documento invece di un muro di testo ininterrotto.

Ad esempio, una riga compressa come <ul><li>A</li><li>B</li></ul> torna come <ul> al livello superiore, con <li>A</li> e <li>B</li> ciascuno rientrato di un livello, e il tag di chiusura </ul> riportato al livello superiore — tre righe invece di una, e la profondità di ciascuna leggibile immediatamente dalla sola indentazione. Gli elementi vuoti come <br> o <img> non spingono mai il contatore di profondità, poiché non hanno figli in cui annidare nulla.

Cose da Sapere

Scegli la modalità XML e il parser è rigoroso: qualsiasi violazione della buona formazione — un tag non chiuso, un annidamento non corrispondente, un carattere non valido — viene segnalata con un messaggio di errore specifico invece di essere corretta silenziosamente. Scegli la modalità HTML e lo strumento esegue invece un controllo del bilanciamento dei tag con il miglior sforzo possibile, perché i browser stessi analizzano l'HTML in modo permissivo e non esiste uno stato "non valido" rigido equivalente da rilevare. Questa distinzione riflette una differenza reale tra i due formati: la specifica XML richiede che un documento sia ben formato o venga completamente rifiutato, senza vie di mezzo, mentre HTML5 è stato deliberatamente progettato in modo che piccoli errori di scrittura — come un tag di chiusura dimenticato — non rompano la pagina. Questa tradizione permissiva è anche il motivo per cui <br/> è obbligatorio in XML ma <br> e <br/> sono entrambi validi e intercambiabili in HTML.

Questo è utile ben oltre il riordino di markup scritto a mano. HTML minificato recuperato da una pagina live, una risposta di un'API XML restituita come un'unica riga densa, o un file di configurazione esportato senza alcuna formattazione diventano tutti molto più facili da leggere — e molto più facili in cui individuare un tag fuori posto — una volta applicata l'indentazione basata sulla profondità. Poiché l'indentazione viene ricalcolata dalla struttura analizzata invece di essere copiata dall'input, l'output è coerente indipendentemente da quanto fosse incoerente la spaziatura originale.

Domande Frequenti

Perché la modalità XML rileva errori che la modalità HTML non nota?

XML ha una specifica rigorosa di buona formazione — il parser XML del browser rifiuta tutto ciò che la viola. Il parsing HTML è deliberatamente permissivo (un obiettivo di design fondamentale, perché il web non si rompa per piccoli errori), quindi non esiste un errore rigoroso equivalente — questo strumento esegue invece un controllo del bilanciamento dei tag con il miglior sforzo possibile per HTML.

Come decide lo strumento quanto rientrare ogni riga?

Traccia la profondità di annidamento durante l'analisi: aprire un tag aumenta la profondità di uno, chiuderlo la diminuisce di uno, e ogni riga viene rientrata di una quantità proporzionale alla sua profondità in quel punto. Un elemento annidato tre livelli nell'albero riceve tre unità di indentazione, indipendentemente da quanto siano lunghi o corti i tag che lo circondano.

Perché <br/> è obbligatorio in XML ma opzionale in HTML?

XML non ha un concetto integrato di elemento "vuoto" — ogni tag deve essere chiuso esplicitamente, sia con un tag di chiusura separato sia con la barra di autochiusura, altrimenti il documento non è ben formato. HTML5 definisce invece un elenco fisso di elementi vuoti (br, img, input, hr e altri) che i browser sanno già non prendere mai figli, quindi sia <code>&lt;br&gt;</code> che <code>&lt;br/&gt;</code> vengono analizzati in modo identico.

La formattazione modifica il mio contenuto?

No — cambiano solo gli spazi bianchi e l'indentazione. Tag, attributi, testo e commenti vengono preservati esattamente (i valori degli attributi vengono nuovamente sottoposti a escape per sicurezza, il che può cambiare solo i caratteri delle virgolette, mai il valore stesso).

Funziona su un documento profondamente annidato o minificato?

Sì — l'approccio basato sul tracciamento della profondità non tiene conto di come l'input fosse originariamente formattato o di quanto sia profondamente annidato; un file minificato su una sola riga e uno rientrato disordinatamente a mano producono lo stesso output pulito, poiché l'indentazione viene ricalcolata dalla struttura dei tag stessa invece di essere preservata dall'input.

Commenti

Ancora nessun commento — scrivi il primo!

Strumenti Simili