100% ローカル — データがブラウザの外に出ることはありません

XMLフォーマッタ|一行だけの文書でも読める形に整えて出力する

XMLを字下げします。中身の意味は動きません。テキストと子要素が混ざる要素は一行のまま残ります。XMLでは、その空白も内容の一部として数えられ、意味を持つからです。

高速 プライベート Cookieゼロ
インデント

XML 入力

XML 出力

このツールの動作

要素の内容は字下げし、テキストの内容には手を触れません。

<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だけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜ <p> 要素は一行のままなのですか。
テキストと子要素が混在しているからです。XML には HTML のような空白の折り畳みがありません。`こんにちは` と `<b>` の間に改行を入れれば、それはテキストの一部となってそこに残ります。要素自体はブロックとして字下げし、内側は書かれたままにします。
整形すると文書が変わりますか。
変わりません。書き換えるのは純粋な字下げだけです。すなわち、意味のあるテキストを持たない要素の中にある、改行を含む完全な空白のテキストノードです。`xml:space="preserve"` の範囲を含め、それ以外は一字一句そのまま戻ります。整形してから最小化すれば元の文書に戻ります。
宣言に ISO-8859-1 と書いてあります。書き換えられますか。
書き換えません。前書き——宣言、DOCTYPE、処理命令——はそのまま写します。ISO-8859-1 の文書を UTF-8 と貼り替えれば、そのバイト列の読み方が変わってしまいます。バージョン、符号化、`standalone` は宣言どおりに残します。

関連ツール