O que esta ferramenta faz
O conteúdo de elementos é indentado; o conteúdo textual não.
<biblioteca><livro><titulo>Dune</titulo></livro></biblioteca>
vira
<biblioteca>
<livro>
<titulo>Dune</titulo>
</livro>
</biblioteca>
A regra que importa
Um elemento que mistura texto e elementos filhos fica numa única linha, exatamente como foi escrito.
<p>Olá <b>mundo</b> de novo</p>
Isso permanece assim. A razão é a diferença entre XML e HTML que mais surpreende: o HTML colapsa espaços, o XML não. Uma quebra de linha inserida entre Olá e <b> não é apresentação em XML — são dados de caractere, e ficam no documento para quem o ler depois.
Um formatador que indenta dentro de conteúdo misto não embeleza o documento: edita o texto dele. Este indenta o elemento como bloco e deixa o interior em paz.
O que conta como indentação
Apenas um nó de texto totalmente branco, contendo quebra de linha, e situado num elemento sem texto significativo próprio. Todo o resto é conteúdo.
Um espaço único entre dois elementos da mesma linha — <b>x</b> <i>y</i> — é mantido. Nada no documento diz que ele é dispensável, e mantê-lo custa um caractere.
xml:space="preserve" suspende tudo isso, para aquele elemento e tudo abaixo dele.
O prólogo volta como você escreveu
A declaração, o DOCTYPE e qualquer instrução de processamento são copiados literalmente:
<?xml version="1.1" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE biblioteca SYSTEM "biblioteca.dtd">
<?xml-stylesheet href="style.xsl"?>
Os três sobrevivem. Reescrever uma declaração como version="1.0" encoding="UTF-8" — o que muitas ferramentas fazem — reetiqueta o documento, e reetiquetar muda a leitura dos seus bytes.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.