Naar de inhoud

XML-opmaker & Validator

Plak XML om die in te springen met 2 spaties, 4 spaties of tabs, hem op één regel te zetten, of te achterhalen waarom hij niet parseert. Welgevormde XML komt terug met het aantal elementen, de nestingdiepte en de grootte; ongeldige XML komt terug met de melding van de parser. Gratis, zonder registratie, en de XML verlaat nooit je browser.

Modus

Zo gebruik je de XML-opmaker

  1. 1. Kies een modus. Opmaken maakt de XML netjes op; Minifyen verwijdert de witruimte tussen elementen.
  2. 2. Kies een inspringing. Kies bij Opmaken 2 spaties, 4 spaties of een tab.
  3. 3. Plak je XML en klik op de knop. Het resultaat verschijnt hieronder met drie aantallen: elementen, maximale diepte (de root is niveau 1) en de uitvoergrootte in tekens.
  4. 4. Los fouten op als die worden getoond. Als de XML niet welgevormd is, wordt er niets uitgevoerd en meldt de parser van je browser wat hij vond. Corrigeer de XML en klik opnieuw op de knop.

Welgevormd versus geldig

Twee verschillende dingen worden „valideren“ van XML genoemd. Een document is welgevormd als het de syntaxisregels van de XML 1.0-aanbeveling van het W3C volgt; het is geldig als het daarnaast aan een schema zoals een DTD of XSD voldoet. Deze tool controleert alleen welgevormdheid, met de XML-parser die in je browser zit. Hij leest geen DTD's of schema's, dus een document dat welgevormd is maar niet klopt voor je toepassing — bijvoorbeeld omdat een verplicht element ontbreekt — slaagt. De regels die hij afdwingt:

RegelBreekt wanneer
Eén root-elementTwee elementen op het hoogste niveau, of tekst vóór de root
Elementen zijn correct genest<a><b></a></b>
Elke starttag heeft een eindtag<a><b></a>, of <br> in plaats van <br/>
Namen zijn hoofdlettergevoelig<Title>…</title>
Attribuutwaarden staan tussen aanhalingstekens<a id=1/>
Geen herhaald attribuut op een element<a id="1" id="2"/>
< en & zijn geëscapet in tekst<a>5 < 6 & 7</a> moet 5 &lt; 6 &amp; 7 zijn

XML kent precies vijf vooraf gedefinieerde entiteiten — &lt;, &gt;, &amp;, &apos; en &quot; — dus een HTML-entiteit zoals &nbsp; is een fout, tenzij een DTD die declareert. Bij een niet-gesloten tag noemt het bericht, dat de woordkeuze van de browser is en per browser verschilt, het niet-passende paar: in Chrome meldt <a><b></a> een fout op regel 1 bij kolom 11 met „Opening and ending tag mismatch: b line 1 and a“.

Wat de opmaker verandert

De tool parseert je XML tot een boom en schrijft die boom weer uit, dus de uitvoer is gelijkwaardige XML in een netter jasje en geen kopie van je tekst. Verwacht deze verschillen:

  • Declaratie en DOCTYPE blijven behouden. Een inleidende <?xml …?>-regel en een <!DOCTYPE …>-declaratie, inclusief interne subset, worden precies teruggeschreven zoals je ze typte.
  • Attributen behouden hun volgorde maar worden herschreven met dubbele aanhalingstekens.
  • Entiteiten worden omgezet. &apos; en tekenreferenties zoals &#169; komen terug als de tekens zelf; alleen &, < en > in tekst, en &quot; in attributen, worden weer geëscapet.
  • Lege elementen worden zelfsluitend. <a></a> wordt <a/> als het geen inhoud heeft, hoewel een element met alleen een spatie <a></a> blijft.
  • Opmerkingen, CDATA-secties en verwerkingsinstructies blijven behouden.

Uitgewerkt voorbeeld

Dit document van één regel heeft een declaratie, een attribuut tussen enkele aanhalingstekens, een opmerking en een leeg element:

Invoer

<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>

Opmaken, 2 spaties

Negen regels en 172 tekens: de declaratie, dan library aan de marge, elk book twee spaties ingesprongen, en de title-, year- en comment-elementen vier spaties ingesprongen. Het id van het eerste boek staat nu als id="1".

Minifyen

Één regel van 146 tekens.

Statistieken

5 elementen en een maximale diepte van 3 (library, book, title).

Minifyen behoudt de declaratie en zet de hele boom op één regel, dus hetzelfde document krimpt van 172 tekens naar 146. De kaart met de uitvoergrootte toont deze tekenaantallen.

Welke tool heb je nodig?

Deze pagina is voor XML. Voor HTML, dat niet-gesloten tags verdraagt en inline spatiëring behoudt, gebruik je de HTML-opmaker. Om XML naar JSON-gegevens om te zetten, laat de geplande XML-naar-JSON-converter zien hoe attributen en herhaalde elementen worden gemapt; voor JSON zelf gebruik je de JSON-opmaker.

Veelgestelde vragen

Wat doet een XML-opmaker?
Hij springt XML opnieuw in zodat de nesting zichtbaar wordt, meestal met één element per regel. Deze tool controleert ook of de XML welgevormd is, omdat hij het document moet parseren voordat hij het in een nieuwe indeling kan terugschrijven.
Hoe werkt XML-validatie hier?
De XML-parser van je browser leest de tekst. Als de XML een syntaxisregel breekt, wordt de fout van de parser getoond en komt er geen uitvoer. Er wordt alleen welgevormdheid gecontroleerd — er wordt niet tegen een DTD- of XSD-schema gevalideerd.
Blijven opmerkingen, CDATA-secties en attributen behouden?
Ja: opmerkingen en CDATA-secties worden precies teruggeschreven, en attributen behouden hun volgorde, al worden aanhalingstekens genormaliseerd naar dubbele. Een DOCTYPE-declaratie wordt teruggeschreven zoals je hem typte.
Wat doet minifyen?
Het verwijdert de witruimte en regeleinden tussen elementen om de kortste gelijkwaardige tekst te krijgen, en behoudt de XML-declaratie als die er is. Tekst binnen elementen zoals <title> behoudt zijn spaties, en dat geldt ook voor tekst naast kindelementen, zoals in een alinea met een vetgedrukt woord.
Waarom verandert opmaken mijn spatiëring in tekst?
Alleen bij het opmaken van gemengde inhoud — tekst naast kindelementen, zoals een alinea met een vetgedrukt woord. Opmaken haalt die tekst bij en zet elk stuk op een eigen regel, wat de witruimte verandert; Minifyen behoudt die. XML met gegevens, waarin elementen óf tekst óf andere elementen bevatten, wordt er niet door geraakt.
Waarom mislukt mijn XML met &nbsp;?
XML heeft maar vijf vooraf gedefinieerde entiteiten, en &nbsp; is daar niet een van. Vervang hem door de numerieke verwijzing &#160;, of declareer de entiteit in een DTD.
Wordt mijn XML naar een server geüpload?
Nee. Het parseren en opmaken gebeurt in je browser, en wat je plakt wordt nergens naartoe gestuurd.

Gerelateerde tools

Meer hulpmiddelen: Data, opmaaktalen en code