Qué hace esta herramienta
El contenido de elementos se indenta; el contenido textual no.
<biblioteca><libro><titulo>Dune</titulo></libro></biblioteca>
se convierte en
<biblioteca>
<libro>
<titulo>Dune</titulo>
</libro>
</biblioteca>
La regla que importa
Un elemento que mezcla texto y elementos hijos se deja en una sola línea, exactamente como se escribió.
<p>Hola <b>mundo</b> otra vez</p>
Eso se queda así. La razón es la diferencia entre XML y HTML que más sorprende: HTML colapsa los espacios, XML no. Un salto de línea insertado entre Hola y <b> no es presentación en XML: son datos de carácter, y permanecen en el documento para quien lo lea después.
Un formateador que indenta dentro de contenido mixto no embellece el documento: le edita el texto. Este indenta el elemento como bloque y deja su interior intacto.
Qué cuenta como indentación
Solo un nodo de texto totalmente blanco, que contenga un salto de línea, y que esté en un elemento sin texto significativo propio. Todo lo demás es contenido.
Un espacio único entre dos elementos de la misma línea — <b>x</b> <i>y</i> — se conserva. Nada en el documento dice que sea despreciable, y conservarlo cuesta un carácter.
xml:space="preserve" lo suspende todo, para ese elemento y cuanto contiene.
El prólogo vuelve como lo escribiste
La declaración, el DOCTYPE y cualquier instrucción de procesamiento se copian literalmente:
<?xml version="1.1" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE biblioteca SYSTEM "biblioteca.dtd">
<?xml-stylesheet href="style.xsl"?>
Las tres sobreviven. Reescribir una declaración como version="1.0" encoding="UTF-8" —lo que hacen muchas herramientas— reetiqueta el documento, y reetiquetar cambia la lectura de sus bytes.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.