XMLをチェック
タグの不一致、未定義のエンティティ、壊れた名前空間を、ブラウザ自体のXMLパーサーで見つけ、正確な位置を特定します。データは保存されません。
- 保存しません
- 順番待ちなし
- 登録不要・透かしなし
XMLを貼り付けると、入力しながらチェックされます。
使い方
XMLを貼り付け
またはファイルをドロップします。どこにも送信されません。
結果を確認
整形式なら、中身の概要が表示されます。そうでなければ、最初の問題の正確な行と列が表示されます。
修正して再チェック
その場で編集すると、入力に合わせて結果が更新されます。
2つの異なる基準と、ここで確認するもの
XMLには正しさの基準が2段階あり、よく混同されます。整形式(well-formed) とは、文書がXML自体の構文に従っていることです。ルート要素が1つ、すべてのタグが閉じている、正しく入れ子になっている、使用できる文字である、アンパサンドと山かっこが正しくエスケープされている、属性値が引用符で囲まれている、1つの要素内で属性名が重複していない。妥当(valid) とはより強い意味で、文書が特定のスキーマにも合っていること、つまり正しい要素が正しい順序で、正しい種類の値を持っていることです。このページが確認するのは前者です。これを満たさない文書はどのXMLパーサーも受け付けないため、ファイルをそもそも読めるかどうかを決めるのがこのチェックです。
よくある失敗は決まっています。群を抜いて多いのは、エスケープされていない & です。これはエンティティ参照の始まりになるため、クエリ文字列付きのURLを要素にそのまま貼り付けると文書が壊れます。テキスト中の単独の < も同じです。ほかには、対応しない・閉じていないタグ、間違った順序で閉じた要素、2つのルート要素、そしてファイルの中に見えないまま紛れ込んでいる、XMLでは一切使えない制御文字があります。
DTDやスキーマは意図的に一切取得しません。これは機能不足ではなく、セキュリティ上の性質です。 XML文書は外部エンティティを指定でき、それを解決するパーサーは、ディスク上のファイルや社内ネットワークのアドレスなど、指している先を取りに行きます。これがXML外部エンティティ(XXE)脆弱性で、最も悪用されている種類のバグの1つです。完全な防御は、解決しないことだけです。そのため、ここでは外部に一切アクセスしません。その代償として、スキーマによる検証は対象外になっています。
表示されるのは、パースが止まった正確な行と列です。どのパーサーでも同じですが、それはミスをした箇所ではなく、文書が意味をなさなくなった箇所です。閉じていないタグは、たいていその後に続く想定外の閉じタグの位置で報告され、数百行後になることもあります。報告された位置は、そこから上にさかのぼって探し始める場所であって、編集する場所ではありません。
ほかの目的には
スキーマで検証するなら、xmllint が定番のツールです。XSDなら xmllint --noout --schema schema.xsd file.xml、RELAX NGなら --relaxng、DTDなら --noout --valid を使います。最初の問題で止まらずにすべての違反を報告するので、文書が単に壊れているのではなく本当に間違っているときに役立ちます。
信頼できない入力を扱うなら、検証ツールよりもパーサーの設定のほうが重要です。使っている言語で、外部エンティティの解決とDTDの処理を明示的に無効にしてください。Pythonなら defusedxml、PHPなら LIBXML_NONET、Javaならセキュア処理です。広く使われているパーサーのいくつかは今でもデフォルトでエンティティを解決し、脆弱性はそのデフォルトに潜んでいます。
よくある質問
XMLはどこかに保存されますか?
いいえ。サーバーとの通信もログもなく、何も保存されません。ページを読み込んだ後はインターネットを切断しても動作します。これは見た目以上に重要です。オンライン整形ツールに貼り付けられるのは、APIレスポンス、設定ファイル、エラーのペイロードで、そこにはトークン、顧客データ、社内のホスト名が日常的に含まれています。
「整形式」とはどういう意味ですか?
文書がXML自体の規則に従っていることです。すべてのタグが閉じている、タグが正しい順序で入れ子になっている、ルート要素がちょうど1つ、属性が引用符で囲まれている、そしてすべての&と<がエスケープされているか有効なエンティティの一部であること。これはXMLについて問える2つの質問の1つ目です。2つ目の、文書が特定のスキーマに合っているかどうかは別の問題で、このページでは答えません。
DTDやXSDスキーマで検証できますか?
いいえ。ここで確認するのは文書が整形式のXMLかどうかで、ほとんどの人が実際に直面しているのはこちらのエラーです。スキーマ検証にはスキーマファイルと検証機能付きのパーサーが必要で、それを搭載したブラウザはありません。ここで対応していると言えば、文書をサーバーに送るか、黙ってチェックしないかのどちらかになります。この区別は知っておく価値があります。整形式として完璧でも、スキーマに対しては間違っている文書はあり得ます。
よくあるXMLのエラーは何ですか?
代表的なのは単独のアンパサンドです。&はURLの中であっても&と書く必要があるため、クエリ文字列を要素にそのまま貼り付けると文書が壊れます。次に多いのは、間違った順序で閉じたタグ、2つのルート要素、 のような未定義のエンティティ(HTMLでは定義されていてもXMLでは定義されていません)、そして宣言せずに使われた名前空間接頭辞です。どれも名前と位置付きで報告されます。
HTMLは有効なXMLですか?
通常は違います。それはミスではなく普通のことです。HTMLでは<br>や<li>のような閉じないタグ、引用符のない属性、単独のアンパサンドが許されますが、XMLではどれも許されません。XMLとしても有効なHTMLが必要なら、それはXHTMLで、すべてのタグを閉じる必要があります。
サイズの上限はありますか?
こちらで設けた上限ではなく、使用可能なメモリ次第です。数MBの文書なら一瞬で整形できます。非常に大きな文書は、一度に保持できる量によって制限されるだけで、こちら側の制限はありません。
ご注意: チェックするのは整形式かどうかで、スキーマ検証ではありません。タグの対応、正しい入れ子、使用できる文字を確認し、最初の問題の正確な行と列を表示します。DTDやXSDで検証するにはそれを取得する必要があり、それはこのページが意図的に一切行わないネットワーク通信です。
このツールをあなたのサイトに設置
ブログ、授業のページ、ヘルプ記事などに無料で設置できます。コードを1つ貼り付けるだけで、訪問者がそのページ上でツールを使えるようになります。