Convertitore HTML in XML
Incolla HTML sporco. Ottieni XML ben formato.
Cosa fa questo strumento
Se ti è mai capitato di dover infilare uno snippet HTML copia-incollato in una pipeline XSLT o in un parser XML rigoroso, conosci già il dolore. I browser sono notoriamente tolleranti — il parser HTML della specifica WHATWG chiuderà silenziosamente i tuoi tag <li>, accetterà attributi senza virgolette e scrollerà le spalle davanti a un </p> mancante. Un parser XML no. Dagli in pasto lo stesso markup e ti becchi un errore di parsing alla riga 3. Questo strumento prende HTML del mondo reale — quello che davvero copi da un CMS o da un template legacy — e lo trasforma in XML che un parser conforme accetta al primo colpo.
Non si tratta solo di chiudere i tag. Il convertitore gestisce tutto l'insieme di cose che rendono HTML permissivo e XML rigoroso: elementi vuoti come <br>, <img> e <hr> diventano auto-chiusi come <br/>; attributi booleani come checked e disabled vengono espansi in checked="checked"; i valori di attributo senza virgolette vengono racchiusi tra doppie virgolette; i nomi dei tag passano a minuscolo per coerenza; e la manciata di entità HTML con nome che XML non conosce ( , —, £, × e così via) viene convertita in entità numeriche come   che ogni parser XML capisce.
I commenti passano intatti. Le sezioni CDATA dentro <script> e <style> vengono preservate. L'output è formattato ed effettivamente leggibile, supera la validazione W3C come documento XML o si incastra direttamente in un flusso XHTML 1.0. Se quello che vuoi davvero è XHTML Strict, sei al 95% del percorso — ti basta aggiungere doctype e namespace in cima da solo.
Come si usa
Tre passi. Funziona uguale sia che incolli un singolo paragrafo sia un template di pagina intero.
Incolla il tuo HTML (o prova l'esempio)
Butta il tuo HTML nell'editor di sinistra così com'è. Tag non chiusi, attributi booleani nudi, valori senza virgolette, elementi vuoti senza auto-chiusura — tutto ok. Clicca su Carica esempio se prima vuoi vedere un caso realistico e caotico.
Non devi aggiustare nulla a mano. Lo scopo di questo strumento è proprio fare la pulizia al posto tuo. Incollalo esattamente come è uscito dal tuo CMS, dal Word o dal template legacy.
Premi Converti
Clicca il pulsante verde Converti. Lo strumento parsa il tuo HTML con un parser tollerante e poi lo ri-serializza tramite un writer XML così ogni tag è chiuso, ogni attributo è tra virgolette e ogni entità è XML valido.
Copia l'XML
Il pannello di destra si riempie di XML indentato e ben formato. Copialo nel tuo input XSLT, nella tua fixture di test DOM, nella build EPUB o ovunque ti serva markup che un parser rigoroso non ti rimbalzi.
Quando serve davvero
Dare in pasto HTML a XSLT o a una pipeline XML
Hai un foglio XSLT che trasforma contenuto in PDF, in feed o in un altro formato — ma l'input è HTML da CMS, non XML. Prima converti, poi trasforma.
Validazione XHTML strict
Intranet legacy che pretende ancora XHTML 1.0 Strict? Incolla l'HTML sciatto prodotto dal tuo editor, copia l'XML, metti un doctype in cima e hai finito.
Convertire markup di blog per EPUB / e-reader
EPUB è XHTML sotto al cofano e rifiuta netto un <code></p></code> mancante. Ripulisci un capitolo intero di HTML da blog in un unico incolla prima di impacchettare.
Pulizia per sistemi di archiviazione
Devi caricare HTML vecchio in un archivio basato su XML (DSpace, Fedora Commons, qualsiasi cosa in stile JATS)? Agli schemi rigorosi non importa che il browser lo renderizzi bene — converti prima.
Domande frequenti
Cosa rende, in concreto, HTML "permissivo" e XML "rigoroso"?
Tre cose grosse. Primo, HTML ha elementi vuoti (<br>, <img>, <input>, <hr>, <meta>, <link>) che non dovrebbero avere tag di chiusura — XML richiede o <br></br> o <br/>. Secondo, HTML ti permette di omettere del tutto i tag di chiusura su cose come <li> e <p> perché l'algoritmo di parsing li deduce. Terzo, HTML accetta attributi senza virgolette (class=foo) e attributi senza valore (disabled). XML li rifiuta tutti e tre.
Cosa succede agli attributi booleani come `checked` e `disabled`?
Vengono espansi nella forma XHTML. <input type=checkbox checked disabled> diventa <input type="checkbox" checked="checked" disabled="disabled"/>. Ogni attributo finisce con un nome E un valore tra virgolette, che è quello che richiede XML — in XML l'attributo senza valore non esiste proprio.
Come vengono gestite le entità HTML come ` ` e `—`?
XML conosce nativamente solo cinque entità con nome: &, <, >, ", '. Tutto il resto — , —, £, © — viene convertito nella forma numerica ( , —, £, ©) così che qualsiasi parser XML le accetti senza bisogno di DTD.
I commenti sopravvivono al giro?
Sì. <!-- da rivedere --> entra, esce uguale. I commenti sono validi sia in HTML sia in XML con la stessa sintassi, quindi passano intoccati — comodo se li usi per note editoriali o marker di build.
Mette in minuscolo nomi di tag e attributi?
Sì, di default. <DIV Class="Foo"> diventa <div class="Foo">. Nomi di tag e attributi vengono messi in minuscolo per allinearsi alla convenzione XHTML 1.0. I VALORI degli attributi restano come sono — quello che metti dentro le virgolette è roba tua, non la tocchiamo.
Quando non basta — quali casi lo strumento NON gestisce?
Il contenuto arbitrario dentro <script> viene preservato come testo, ma lo strumento non prova a riscrivere JavaScript per renderlo XML-safe. Se il tuo JS usa caratteri < o & nudi, devi avvolgerlo tu in <![CDATA[...]]> (preserviamo il CDATA esistente). I frammenti di documento vanno bene; non sintetizziamo una dichiarazione <?xml ?> né un doctype — aggiungili tu se il consumer a valle li vuole.
Altri strumenti che potrebbero servirti
HTML in XML è un pezzo del puzzle. Questi strumenti ci stanno bene insieme: