Formattatore XML
Indenta o compatta un documento XML senza cambiare quello che dice, interamente nel tuo browser.
Gira interamente nel tuo browser. Non viene caricato, registrato o salvato niente.
Incolla un documento XML e leggilo. Indentazione, oppure tutto quanto di nuovo su una riga sola — e nient'altro cambiato, perché in XML gran parte di quello che un formattatore vorrebbe riordinare sono dati.
Come funziona
Un formattatore HTML può indentare liberamente fra gli elementi di blocco, perché lì il browser non rende alcuno spazio. L'XML non ha elementi di blocco né elementi in linea. Non sa che cosa significhi uno solo dei tuoi elementi, e gli spazi dentro un elemento che contiene testo fanno parte di quel testo.
Quindi la regola qui è stretta, ed è tutto lo strumento: un elemento viene re-indentato solo quando contiene un altro elemento e nessun testo proprio. Tutto il resto — testo, contenuto misto, CDATA, una foglia che contiene solo spazi, un elemento marcato xml:space="preserve" — torna indietro byte per byte.
Dentro un tag di apertura gli spazi non sono mai dati, quindi le sequenze fra attributi diventano un solo spazio. Quello che sta fra le virgolette resta intatto. Gli attributi non vengono mai riordinati, rinominati o riquotati.
I tag devono bilanciarsi prima che accada qualunque cosa. Un documento il cui tag di chiusura non corrisponde, o che apre un elemento e non lo chiude mai, viene rifiutato invece che riordinato: un formattatore che indenta markup rotto restituisce qualcosa che sembra giusto ed è sbagliato in un modo nuovo.
Esempi
| Caso | Dati inseriti | Risultato |
|---|---|---|
| Il contenuto misto resta esattamente com'è | <p>Paper <em>and</em> cloth.</p> | <p>Paper <em>and</em> cloth.</p> |
| Una foglia che contiene spazi li conserva | <value> </value> | <value> </value> |
| Fra gli attributi resta un solo spazio | <a b="1" c="2"/> | <a b="1" c="2"/> |
Domande frequenti
Perché il mio documento è tornato su una riga sola?
Perché il suo elemento radice contiene testo oltre a elementi. Quello è contenuto misto, e gli spazi al suo interno sono dati: indentare inserirebbe caratteri che il tuo documento non aveva. Il formattatore sta funzionando — si sta rifiutando di modificare il tuo contenuto per renderlo più bello.
Controlla il mio XML contro uno schema?
No. Controlla che i tag si bilancino, che è ciò che gli serve per poter indentare qualcosa, e nient'altro. Per verificare un documento contro un XSD, usa il validatore XML.
Qualcosa esce dal mio browser?
No. Il formattatore è JavaScript che gira sulla tua macchina; il documento non viene mai inviato da nessuna parte, che è l'unica soluzione sensata per un file che stai incollando per cambiargli gli spazi.
Perché i miei attributi non sono su righe separate?
Perché un tag di apertura non ha annidamento da mostrare. Spezzarne uno su più righe è questione di gusto più che di struttura, e questo formattatore fa solo le cose che hanno una sola risposta giusta.
Che cosa toglie «su una riga»?
Solo gli spazi fra gli elementi, negli stessi punti in cui l'indentazione li avrebbe aggiunti. Testo, CDATA e commenti restano intatti, quindi il documento dice ancora esattamente quello che diceva.
Da sapere
- Una passata di formattazione, non un parser. I namespace non vengono risolti, le entità non vengono espanse, nessun valore viene normalizzato e niente viene controllato contro uno schema.
- La codifica è quella del tuo browser. La dichiarazione in cima al documento viene riportata invariata, qualunque cosa dica.