XML 整形
XML を 2 スペース・4 スペース・タブで整形、または 1 行に圧縮します。入力しながら整形式かを検証し、要素数とネスト深度を表示します。
壁のような XML を読める形に、あるいは元通りに詰め直す。 XML を貼り付けると、好みのインデントで整形し直せます。1 行への圧縮も可能です。入力しながら整形式かどうかを検証し、要素数とネストの深さをカウンターで表示します。
XML を 2 スペース・4 スペース・タブで整形、または 1 行に圧縮します。入力しながら整形式かを検証し、要素数とネスト深度を表示します。
壁のような XML を読める形に、あるいは元通りに詰め直す。 XML を貼り付けると、好みのインデントで整形し直せます。1 行への圧縮も可能です。入力しながら整形式かどうかを検証し、要素数とネストの深さをカウンターで表示します。
これが XML の整形を JSON の整形と分ける決定的な違いです。JSON ではトークン間の空白に意味はなく、削除は常に安全です。ところが XML では、<name> と Ada のあいだの文字はその要素のテキストノードの一部です。インデントを付け直すことは、厳密には文書の中身を変えることを意味します。
実務上これが問題になることはほとんどありません。大多数の XML は「要素のみを含む内容」——要素の中に要素だけがあり、他には何も無い形——を採っており、その周囲の空白はどのスキーマにとっても無視してよいからです。本ツールはそうした要素の内部にだけインデントを加えます。要素が実際のテキストを持つ場合や、HTML のようにテキストと子要素が混在する場合は、その内容をそのまま残します。この 1 つの規則があるおかげで、<p>Hello <b>there</b></p> の there の前後に空白が紛れ込むことはありません。
ここで行う検査は「整形式(well-formed)」の確認で、XML 仕様がすべてのパーサーに要求している水準です。ルート要素が 1 つであること、すべてのタグが閉じられ正しく入れ子になっていること、属性値が引用符で囲まれていること、テキスト中の & と < がエスケープされていること。どれか 1 つでも欠ければ文書はその場で拒否されます。HTML と違い、XML にエラー回復が無いのは有名な話です。
「妥当(valid)」はさらに先の話で、文書が DTD・XSD・RelaxNG のいずれかのスキーマに適合するかを問います。<invoice> が本当に <total> を含むか、日付が本当に日付か、といったことです。これにはスキーマ本体が必要ですが、それは貼り付けた文書には含まれていません。ここで通ることは、構文が健全でどのパーサーでも読めることを意味しますが、受け側システムが内容を正しいと認めることまでは保証しません。
圧縮は要素間の無視可能な空白を取り除き、文書全体を 1 行にまとめます。その空白はもともと内容ではないため、要素のみで構成された出力は解析するとまったく同じツリーになります。
もう 1 つの削減は空要素から来ます。仕様上 <summary></summary> と <summary/> は同一と定義されており、出力では短いほうを使います。効果は本物ですが控えめです。XML のサイズの大半は繰り返されるタグ名——各要素が名前を 2 回書く——が占めているからです。本当に小さくしたいなら答えは gzip で、空白の削除よりはるかに効率よく重複した名前を処理します。なお、圧縮した XML は人にはほぼ読めないので、読む用の整形済みコピーは残しておいてください。