XMLフォーマッター&バリデーター
XMLを2スペース、4スペース、タブでインデントしたり、1行にまとめたり、解析できない理由を調べたりできます。整形式のXMLには、要素数、階層の深さ、サイズが表示されます。整形式でないXMLには、パーサーのメッセージが表示されます。無料で、登録は不要です。XMLがブラウザの外に出ることはありません。
モード
XMLフォーマッターの使い方
- 1. モードを選びます。 フォーマットは読みやすく整形し、圧縮は要素の間の空白を取り除きます。
- 2. インデントを選びます。 フォーマットの場合は、2スペース、4スペース、タブから選んでください。
- 3. XMLを貼り付けてボタンを押します。 結果が下に表示され、要素数、最大の深さ(ルートは1階層目)、出力サイズ(文字数)の3つの数値が表示されます。
- 4. エラーがあれば修正します。 XMLが整形式でない場合は何も出力されず、ブラウザのパーサーが見つけた内容が表示されます。XMLを修正して、もう一度ボタンを押してください。
整形式と妥当の違い
XMLを「検証」するという言い方は、二つの異なることを指します。文書がW3CのXML 1.0勧告の構文規則に従っている場合は整形式です。さらに、DTDやXSDのようなスキーマにも従っている場合は妥当です。このツールは、ブラウザに組み込まれたXMLパーサーを使って、整形式かどうかだけを確認します。DTDやスキーマは読み取らないため、整形式であってもアプリケーションに合わない文書は通ります。たとえば必須の要素が欠けている場合です。このツールが適用する規則は次のとおりです:
| 規則 | 違反する場合 |
|---|---|
| ルートの要素は一つ | 最上位に要素が二つある、またはルートの前にテキストがある |
| 要素は正しく入れ子になっている | <a><b></a></b> |
| 開始タグには必ず終了タグがある | <a><b></a>、または <br/> の代わりに <br> |
| 名前は大文字と小文字を区別する | <Title>…</title> |
| 属性値は引用符で囲む | <a id=1/> |
| 一つの要素に同じ属性を二度書かない | <a id="1" id="2"/> |
テキスト内の < と & はエスケープする | <a>5 < 6 & 7</a> は 5 < 6 & 7 とすべき |
XMLで事前定義されているエンティティは、<、>、&、'、" の5つだけです。そのため、HTMLエンティティ(例: )は、DTDで宣言されていない限りエラーになります。閉じられていないタグのメッセージはブラウザごとの文言で、ブラウザによって異なります。Chromeでは、<a><b></a> は1行目の11列目にエラーを報告し、「Opening and ending tag mismatch: b line 1 and a」と表示され、食い違っている開始タグと終了タグを示します。
フォーマットで変わること
このツールはXMLを木構造に解析し、その木を書き出し直すため、出力は元の文章のコピーではなく、同じ内容のXMLをより整った形で表したものになります。次のような違いが生じます:
- 宣言とDOCTYPEは保持されます。 先頭の
<?xml …?>行と、内部サブセットを含む<!DOCTYPE …>宣言は、入力したとおりに書き戻されます。 - 属性は順序を保ちますが、二重引用符で書き直されます。
- エンティティは解決されます。
'や©のような文字参照は、文字そのものとして出力されます。エスケープし直されるのは、テキスト中の&、<、>と、属性中の"だけです。 - 空の要素は自己終了タグになります。
<a></a>は中身がない場合<a/>になりますが、空白だけを含む場合は<a></a>のままです。 - コメント、CDATAセクション、処理命令は保持されます。
具体例
次の1行の文書には、宣言、一重引用符の属性、コメント、空の要素が含まれています:
入力
<?xml version="1.0" encoding="UTF-8"?><library><book id='1'><title>APA Manual</title><year>2020</year><!-- note --></book><book id="2"/></library>
フォーマット(2スペース)
9行、172文字です。宣言の後に library が左端に来て、各 book は2スペース、title、year、コメントは4スペース下がります。最初の book の id は id="1" と書かれます。
圧縮
1行、146文字です。
統計
要素5個、最大の深さ3(library、book、title)。
圧縮では宣言を残し、文書全体を1行にまとめるため、同じ文書は172文字から146文字に縮みます。出力サイズのカードには、これらの文字数が表示されます。
どのツールが必要ですか?
このページはXML用です。タグの閉じ忘れを許容し、インラインの空白を保持するHTMLには、HTMLフォーマッターを使ってください。XMLをJSONデータに変換する場合は、属性と繰り返し要素がどう対応づけられるかを示す予定のXMLからJSONへの変換ツールが役立ちます。JSON自体については、JSONフォーマッターを使ってください。
よくある質問
- XMLフォーマッターは何をしますか?
- XMLを再インデントして、要素の入れ子構造が見えるようにします。通常は1行に1要素ずつ表示されます。このツールは、新しい形で書き出す前に文書を解析する必要があるため、整形式かどうかも確認します。
- ここではXMLの検証はどのように行われますか?
- ブラウザに組み込まれたXMLパーサーが文章を読み取ります。XMLが構文規則に違反している場合は、パーサーのエラーが表示され、出力は生成されません。チェックするのは整形式かどうかだけで、DTDやXSDのスキーマに対する検証は行いません。
- コメント、CDATAセクション、属性は保持されますか?
- はい。コメントとCDATAセクションは元のとおりに書き戻され、属性は順序を保ちますが、引用符は二重引用符に統一されます。DOCTYPE宣言は入力したとおりに書き戻されます。
- 圧縮は何をしますか?
- 要素の間の空白と改行を取り除き、同じ意味をもつ最も短い文章にします。XML宣言がある場合はそれを残します。
<title>のような要素の中のテキストは空白を保持し、子要素の隣にあるテキスト(太字の語を含む段落など)も同様です。 - フォーマットすると、テキストの空白が変わるのはなぜですか?
- 混在コンテンツ(子要素の隣にあるテキスト。太字の語を含む段落など)を整形する場合だけ起こります。フォーマットはそのテキストの前後の空白を削除し、各部分を別の行に置くため、空白が変わります。圧縮では保持されます。要素がテキストか他の要素のどちらかだけを含むデータ型XMLには影響しません。
- を含むXMLがエラーになるのはなぜですか?
- XMLで事前定義されているエンティティは5つだけで、
はその一つではありません。数値の文字参照 に置き換えるか、DTDでエンティティを宣言してください。 - 私のXMLはサーバーにアップロードされますか?
- いいえ。解析とフォーマットはすべてブラウザ内で行われ、貼り付けた内容がどこかに送信されることはありません。