HTML links einfügen und auf "Konvertieren" klicken — wir machen daraus wohlgeformtes XMLHTML einfügen

Was dieses Tool macht

Wer schon einmal ein per Copy-Paste eingefügtes HTML-Snippet in eine XSLT-Pipeline oder einen strikten XML-Parser stecken musste, kennt den Schmerz. Browser sind berüchtigt nachsichtig — der HTML-Parser der WHATWG-Spezifikation schließt Ihre <li>-Tags stillschweigend, akzeptiert Attribute ohne Anführungszeichen und zuckt bei fehlendem </p> nur mit den Schultern. Ein XML-Parser tut das nicht. Ihn mit demselben Markup zu füttern, bringt in Zeile 3 einen Parse-Error. Dieses Tool nimmt reales HTML — die Sorte, die man wirklich aus einem CMS oder einem Legacy-Template kopiert — und macht daraus XML, das ein standardkonformer Parser beim ersten Versuch akzeptiert.

Es geht um mehr als Tags zu schließen. Der Konverter kümmert sich um alles, was HTML lax und XML streng macht: leere Elemente wie <br>, <img> und <hr> werden als <br/> selbstgeschlossen; boolesche Attribute wie checked und disabled werden zu checked="checked" expandiert; Attributwerte ohne Anführungszeichen bekommen doppelte Anführungszeichen; Tag-Namen werden zur Konsistenz kleingeschrieben; und die Handvoll benannter HTML-Entities, die XML nicht kennt (&nbsp;, &mdash;, &pound;, &times; usw.), werden in numerische Entities wie &#160; umgewandelt, die jeder XML-Parser versteht.

Kommentare kommen unversehrt durch. CDATA-Abschnitte in <script> und <style> bleiben erhalten. Die Ausgabe ist schön eingerückt, damit man sie tatsächlich lesen kann, und sie besteht die W3C-Validierung als XML-Dokument oder passt direkt in einen XHTML-1.0-Workflow. Wer wirklich XHTML Strict will, ist damit zu 95 % am Ziel — Doctype und Namespace oben drauf setzen Sie selbst.

So wird's benutzt

Drei Schritte. Funktioniert gleich, egal ob Sie einen einzigen Absatz oder ein ganzes Seitentemplate einfügen.

1

HTML einfügen (oder das Beispiel probieren)

Werfen Sie Ihr HTML wie es ist in den linken Editor. Nicht geschlossene Tags, nackte boolesche Attribute, Werte ohne Anführungszeichen, leere Elemente ohne Self-Close — alles okay. Klicken Sie auf Beispiel laden, wenn Sie erst ein realistisches, unaufgeräumtes Beispiel sehen wollen.

Sie müssen nichts von Hand korrigieren. Genau das ist der Sinn des Tools — es räumt für Sie auf. Fügen Sie es genau so ein, wie es aus Ihrem CMS, Word-Dokument oder Legacy-Template kam.

2

Konvertieren drücken

Klicken Sie auf den grünen Button Konvertieren. Das Tool parst Ihr HTML mit einem toleranten Parser und serialisiert es dann über einen XML-Writer neu, sodass jedes Tag geschlossen, jedes Attribut in Anführungszeichen und jede Entity legales XML ist.

3

XML kopieren

Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML. Kopieren Sie es in Ihre XSLT-Eingabe, Ihre DOM-Test-Fixture, Ihren EPUB-Build oder wohin auch immer Sie Markup brauchen, an dem sich ein strikter Parser nicht verschluckt.

Wann das wirklich nützlich ist

HTML in XSLT oder eine XML-Pipeline füttern

Sie haben ein XSLT-Stylesheet, das Inhalte in PDF, einen Feed oder ein anderes Format verwandelt — aber Ihre Eingabe ist HTML aus einem CMS, nicht XML. Erst konvertieren, dann transformieren.

XHTML-Strict-Validierung

Ein Legacy-Intranet, das noch XHTML 1.0 Strict verlangt? Fügen Sie das schlampige HTML Ihres Editors ein, kopieren Sie das XML heraus, setzen Sie einen Doctype oben drauf — fertig.

Blog-Markup für EPUB / E-Reader umwandeln

EPUB ist unter der Haube XHTML und weist ein fehlendes <code>&lt;/p&gt;</code> glatt zurück. Räumen Sie ein ganzes Kapitel Blog-HTML in einem Rutsch auf, bevor Sie paketieren.

Bereinigung für Archivsysteme

Altes HTML in ein XML-basiertes Archiv (DSpace, Fedora Commons, alles mit JATS-Note) einspielen? Strikten Schemas ist es egal, dass der Browser es hübsch gerendert hat — erst konvertieren.

Häufige Fragen

Was macht HTML eigentlich "lax" und XML "streng"?

Drei große Dinge. Erstens hat HTML leere Elemente (<br>, <img>, <input>, <hr>, <meta>, <link>), die kein schließendes Tag haben sollen — XML verlangt entweder <br></br> oder <br/>. Zweitens lässt HTML zu, dass schließende Tags bei <li> und <p> ganz weggelassen werden, weil der Parsing-Algorithmus sie ergänzt. Drittens akzeptiert HTML Attribute ohne Anführungszeichen (class=foo) und Attribute ohne Wert (disabled). XML weist alle drei zurück.

Was passiert mit booleschen Attributen wie `checked` und `disabled`?

Sie werden in die XHTML-Form expandiert. <input type=checkbox checked disabled> wird zu <input type="checkbox" checked="checked" disabled="disabled"/>. Jedes Attribut hat am Ende einen Namen UND einen Wert in Anführungszeichen, was XML so verlangt — in XML gibt es schlichtweg kein Attribut ohne Wert.

Wie werden HTML-Entities wie `&nbsp;` und `&mdash;` behandelt?

XML kennt von Haus aus nur fünf benannte Entities: &amp;, &lt;, &gt;, &quot;, &apos;. Alles andere — &nbsp;, &mdash;, &pound;, &copy; — wird in seine numerische Form (&#160;, &#8212;, &#163;, &#169;) umgewandelt, damit jeder XML-Parser es ohne DTD akzeptiert.

Überleben Kommentare den Roundtrip?

Ja. <!-- zur Prüfung markiert --> geht rein und kommt identisch raus. Kommentare sind in HTML und XML mit derselben Syntax gültig, also gehen sie unverändert durch — praktisch, wenn Sie damit redaktionelle Notizen oder Build-Marker setzen.

Werden Tag- und Attributnamen kleingeschrieben?

Ja, standardmäßig. <DIV Class="Foo"> wird zu <div class="Foo">. Tag- und Attributnamen werden kleingeschrieben, um der XHTML-1.0-Konvention zu entsprechen. Attribut-WERTE bleiben unverändert — was Sie in Anführungszeichen setzen, sind Ihre Daten, und die fassen wir nicht an.

Wann reicht das nicht — welche Fälle deckt das Tool NICHT ab?

Beliebiger <script>-Inhalt wird als Text erhalten, aber das Tool versucht nicht, JavaScript XML-tauglich umzuschreiben. Falls Ihr JS nackte <- oder &-Zeichen enthält, müssen Sie es selbst in <![CDATA[...]]> einwickeln (vorhandenes CDATA bewahren wir). Dokumentfragmente sind okay; wir erzeugen keine <?xml ?>-Deklaration und keinen Doctype — fügen Sie die selbst hinzu, wenn Ihr Downstream-Konsument sie will.

Weitere Tools, die passen könnten

HTML zu XML ist nur ein Puzzlestück. Diese Tools ergänzen es gut: