XML-Formatierer
Ein XML-Dokument einrücken oder verdichten, ohne zu ändern, was es sagt — vollständig in Ihrem Browser.
Läuft vollständig in Ihrem Browser. Nichts wird hochgeladen, protokolliert oder gespeichert.
Fügen Sie ein XML-Dokument ein und lesen Sie es. Einrückung, oder das Ganze wieder auf einer Zeile — und sonst nichts geändert, denn in XML ist das meiste von dem, was ein Formatierer aufräumen möchte, Daten.
Wie es funktioniert
Ein HTML-Formatierer darf zwischen Blockelementen frei einrücken, denn dort stellt ein Browser keinen Leerraum dar. XML hat keine Blockelemente und keine Inline-Elemente. Es weiß von keinem einzigen Ihrer Elemente, was es bedeutet, und Leerraum in einem Element, das Text enthält, ist Teil dieses Textes.
Die Regel hier ist daher eng, und sie ist das ganze Tool: Ein Element wird nur dann neu eingerückt, wenn es ein anderes Element und keinen eigenen Text enthält. Alles andere — Text, gemischter Inhalt, CDATA, ein Blatt, das nur Leerzeichen enthält, ein mit xml:space="preserve" gekennzeichnetes Element — kommt Byte für Byte zurück.
In einem öffnenden Tag ist Leerraum nie Daten, Folgen davon zwischen Attributen werden also zu einem Leerzeichen. Was zwischen den Anführungszeichen steht, bleibt unangetastet. Attribute werden nie umgeordnet, umbenannt oder neu gequotet.
Die Tags müssen sich ausgleichen, bevor irgendetwas davon geschieht. Ein Dokument, dessen schließendes Tag nicht passt oder das ein Element öffnet und nie schließt, wird abgelehnt statt aufgeräumt: Ein Formatierer, der kaputtes Markup einrückt, gibt etwas zurück, das richtig aussieht und auf eine neue Art falsch ist.
Beispiele
| Fall | Eingabe | Ergebnis |
|---|---|---|
| Gemischter Inhalt bleibt genau, wie er ist | <p>Paper <em>and</em> cloth.</p> | <p>Paper <em>and</em> cloth.</p> |
| Ein Blatt mit Leerzeichen behält sie | <value> </value> | <value> </value> |
| Zwischen Attributen bleibt ein Leerzeichen | <a b="1" c="2"/> | <a b="1" c="2"/> |
Häufige Fragen
Warum kam mein Dokument auf einer Zeile zurück?
Weil sein Wurzelelement neben Elementen auch Text enthält. Das ist gemischter Inhalt, und der Leerraum darin ist Daten: Einrücken würde Zeichen einfügen, die Ihr Dokument nicht hatte. Der Formatierer arbeitet — er weigert sich, Ihren Inhalt zu bearbeiten, nur damit es hübscher aussieht.
Prüft es mein XML gegen ein Schema?
Nein. Es prüft, dass die Tags sich ausgleichen, und das braucht es, um überhaupt etwas einrücken zu können, und sonst nichts. Um ein Dokument gegen ein XSD zu prüfen, nehmen Sie den XML-Validator.
Verlässt irgendetwas meinen Browser?
Nein. Der Formatierer ist JavaScript, das auf Ihrem Rechner läuft; das Dokument wird nie irgendwohin gesendet, und das ist die einzig vernünftige Anordnung für eine Datei, die Sie einfügen, damit ihr Leerraum geändert wird.
Warum stehen meine Attribute nicht auf eigenen Zeilen?
Weil ein öffnendes Tag keine Verschachtelung zu zeigen hat. Eines über Zeilen zu brechen ist eine Frage des Geschmacks und nicht der Struktur, und dieser Formatierer tut nur die Dinge, die eine einzige richtige Antwort haben.
Was entfernt „auf einer Zeile“?
Nur den Leerraum zwischen Elementen, an denselben Stellen, an denen das Einrücken ihn hinzugefügt hätte. Text, CDATA und Kommentare bleiben unangetastet, das Dokument sagt also weiterhin genau das, was es gesagt hat.
Gut zu wissen
- Eine Dispositionsschicht, kein Parser. Namensräume werden nicht aufgelöst, Entitäten nicht expandiert, kein Wert vereinheitlicht und nichts gegen ein Schema geprüft.
- Die Kodierung ist die Ihres Browsers. Die Deklaration am Anfang des Dokuments wird unverändert durchgereicht, was immer sie sagt.