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

XMLバリデータ|どこで壊れているのかをその場で示してくれます

XMLが整形式かを調べます。ルートは一つか、タグは閉じて入れ子になっているか、名前と文字は使えるか。最初の破綻は、それが起きた場所とともに、はっきり示されます。

高速 プライベート Cookieゼロ

XML 入力

Result 出力

このツールが検査するもの

整形式であること。仕様が「構文として XML である」ことを指して使う語です。

  • 根要素がちょうど一つであること。
  • 各タグが閉じられ、開いた順に閉じられていること。
  • 属性値が引用符で囲まれ、同じ要素に同じ属性が重複しないこと。
  • 要素名と属性名が適法に始まり、適法な文字だけからなること。
  • 実体参照と数値文字参照が正しく書かれていること。
  • XML が禁じる文字を含まないこと。

通れば根要素と文書の大きさを返します。通らなければ、解析器が諦めた行と桁とともにその申し立てを返します。

整形式は妥当ではない

XML 仕様ではこれは別の語で、混同すると実際に時間を失います。

検査する対象
整形式構文——このツールが見るもの
妥当構文とスキーマ(DTD、XSD、RELAX NG)

文書は非の打ちどころなく整形式でありながら、肝心なところがすべて誤っていることがあります。必須要素の欠落、位置の誤り、小数と宣言された場所の <price>banana</price>。この報告はそれについて何も言いませんし、整形式の検査器であればどれも言えません。

必要なのがスキーマ検証なら、スキーマそのものと、それを読む道具が要ります。

DOCTYPE はたどらない

<!DOCTYPE> の参照は URL です。解決すれば外向きの要求が出て、この文書の存在と閲覧者を知らせることになります。ここではブラウザから何も出ません。DOCTYPE は構文として検査し、そのまま残します。

外部実体を使う攻撃がここで問題にならないのも同じ理由です。どこかを指す実体は決して取りに行きません。

前置きの処理命令は問題ない

根要素の前の <?xml-stylesheet href="style.xsl"?> はごく普通の妥当な XML です。報告は命令ではなく本当の根要素を名指しします。

強制される順序の規則は仕様のそれだけです。XML 宣言があるなら先頭に来ること。それ以外の位置ではもはや宣言ではなく xml という名前の処理命令であり、その名前は予約されています。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

XSD や DTD に照らして検証してくれますか。
いいえ。そしてこの区別は重要です。**整形式**とは構文が成り立っていることです。根要素が一つ、各タグが正しい順で閉じられ、属性値が引用され、名前と文字が適法であること。**妥当**とは、さらにスキーマに従うこと、つまり必須要素が宣言どおりの順序と型で存在することです。完全に整形式でありながら、一行ごとにスキーマへ違反している文書もあり得ます。
なぜ DOCTYPE をたどらないのですか。
たどるとは、指している先を取りに行くことだからです。DTD の参照は URL であり、解決すれば要求が外に出ます。その文書が存在すること、誰が見ているかを明かすことになります。ここでの処理はすべてブラウザの中で完結し、外へは何も出ません。DOCTYPE は構文として検査し、それ以上は触れません。
「宣言が先頭でなければならない」と出ました。なぜですか。
XML 宣言が宣言であるのは先頭にあるときだけだからです。それ以外の位置では `xml` という名前の処理命令となり、その名前は仕様が予約しています。手前に `<?xml-stylesheet?>` があるのが通例の原因です。宣言を先頭へ戻せば受理されます。

関連ツール