このツールの動作
要素の内容は字下げし、テキストの内容には手を触れません。
<library><book><title>Dune</title></book></library>
は次のようになります。
<library>
<book>
<title>Dune</title>
</book>
</library>
肝心な規則
テキストと子要素が混在する要素は、書かれたまま一行に残します。
<p>こんにちは <b>世界</b> また</p>
これはそのままです。理由は、XML と HTML の違いのうち最も多くの人がつまずく点にあります。HTML は空白を折り畳みますが、XML は折り畳みません。 こんにちは と <b> の間に入れた改行は、XML では見た目の話ではありません。それは文字データであり、次に読む人のために文書の中に残り続けます。
つまり、混在内容の内部を字下げする整形器は文書を美しくしているのではなく、本文を書き換えています。このツールは要素をブロックとして字下げし、内側には触れません。
何を字下げとみなすか
完全に空白であり、改行を含み、しかも意味のあるテキストを持たない要素の中にあるテキストノード。それだけです。それ以外はすべて内容です。
同じ行に並ぶ二つの要素の間の空白ひとつ——<b>x</b> <i>y</i>——は残します。それが無視してよいものだとは文書のどこにも書かれておらず、残す費用は一文字です。
xml:space="preserve" があれば、その要素と配下すべてで以上の処理を停止します。
前書きは書いたまま戻る
宣言、DOCTYPE、処理命令はそのまま写します。
<?xml version="1.1" encoding="ISO-8859-1" standalone="yes"?>
<!DOCTYPE library SYSTEM "library.dtd">
<?xml-stylesheet href="style.xsl"?>
三つとも残ります。宣言を version="1.0" encoding="UTF-8" に書き換える道具は多いのですが、それは文書の貼り紙を替える行為であり、貼り紙を替えればバイト列の読み方が変わります。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。