XML-formatter

Laat een XML-document inspringen of minificeer het zonder te veranderen wat erin staat, volledig in je browser.

Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.

Plak een XML-document en lees het. Ingesprongen, of helemaal terug op één regel, en verder zonder iets te veranderen, want in XML is bijna alles wat een formatter zou willen opruimen gewoon data.

Hoe het werkt

Een HTML-formatter kan vrij inspringen tussen blokelementen, omdat een browser daar geen witruimte weergeeft. XML kent geen blok- of inline-elementen. Het weet niet wat je elementen betekenen, en witruimte binnen een element dat tekst bevat, hoort bij die tekst.

De regel hier is dus smal, en hij is de hele tool: een element wordt alleen opnieuw ingesprongen als het een ander element bevat en geen eigen tekst. Al het andere — tekst, gemengde inhoud, CDATA, een blad dat alleen spaties bevat, een element gemarkeerd met xml:space="preserve" — komt byte voor byte terug.

Binnen een openingstag is witruimte nooit data, dus reeksen spaties tussen attributen worden tot één teruggebracht. Wat tussen de aanhalingstekens staat, blijft zoals het is. Attributen worden niet anders geordend, niet hernoemd en niet opnieuw tussen aanhalingstekens gezet.

De tags moeten in evenwicht zijn voordat hier iets van gebeurt. Een document waarvan een sluittag niet overeenkomt, of dat een element opent en nooit sluit, wordt geweigerd in plaats van opgemaakt: een formatter die kapotte markup laat inspringen, levert iets op dat er goed uitziet en op een nieuwe manier fout is.

Voorbeelden

Geval Invoer Resultaat
Gemengde inhoud blijft precies zoals hij is <p>Paper <em>and</em> cloth.</p> <p>Paper <em>and</em> cloth.</p>
Een blad met spaties houdt ze <value> </value> <value> </value>
Attributen houden één spatie tussen elkaar <a b="1" c="2"/> <a b="1" c="2"/>

Veelgestelde vragen

Waarom krijg ik mijn document op één regel terug?

Omdat het root-element naast elementen ook tekst bevat. Dat is gemengde inhoud, en de witruimte erin is data: inspringen zou tekens toevoegen die je document niet had. De formatter werkt gewoon: hij weigert je inhoud te bewerken om die mooier te maken.

Controleert hij mijn XML tegen een schema?

Nee. Hij controleert of de tags in evenwicht zijn, wat hij nodig heeft om iets te kunnen laten inspringen, en verder niets. Gebruik de XML-validator om een document tegen een XSD te controleren.

Verlaat er iets mijn browser?

Nee. De formatter is JavaScript dat op je eigen apparaat draait; het document wordt nergens heen gestuurd, en dat is de enige verstandige opzet voor een bestand dat je plakt om er de witruimte van te laten aanpassen.

Waarom staan mijn attributen niet op aparte regels?

Omdat een openingstag geen nesting heeft om te laten zien. Er één over meerdere regels verdelen is een kwestie van smaak en niet van structuur, en deze formatter doet alleen dingen met één juist antwoord.

Wat haalt de modus “op één regel” weg?

Alleen de witruimte tussen elementen, op precies de plekken waar het inspringen die zou hebben toegevoegd. Tekst, CDATA en commentaar blijven onaangeroerd, dus het document zegt nog precies wat het zei.

Goed om te weten

  • Een opmaakslag, geen parser. Namespaces worden niet opgelost, entiteiten niet uitgevouwen, geen enkele waarde wordt genormaliseerd en niets wordt tegen een schema gecontroleerd.
  • De codering is die van je browser. De declaratie bovenaan het document gaat ongewijzigd mee, wat er ook in staat.

Alle tools in Code