XML / XPath / XSD

XSD検証型の違反と参照先を確認

ボタンまたはCtrl/Cmd+Enterで実行します。初期サンプルは主スキーマと型定義の2ファイル構成です。

XSD検証

XML入力

現在のXSD

XMLとスキーマの内容はブラウザ内で処理され、検証のために送信されません。

types/common.xsdのようなASCII相対パスを使います。参照元ファイルから解決し、URLや仮想ルート外のパスは使えません。

手動実行、読込を含め10秒。XMLと各スキーマは各1,000,000文字、スキーマ合計2,000,000文字・20ファイル、深さ100まで。

結果が古くなりました。再検証すると出力できます。

XSD検証が役立つのは、XMLを開けるのに連携先で拒否されるときです。タグが正しく閉じていても、整数欄に文字が入っていたり、必須要素が欠けていたりすれば、スキーマには適合しません。

このXMLバリデーターは、指定した主スキーマを基準にXMLスキーマ検証を行います。XML妥当性チェックに使う依存ファイルも明示するため、別の版の規則を知らないうちに参照することを防げます。

XSD検証で原因を切り分ける

依存関係を揃えて照合

XSD検証はxs:includeとxs:importをローカルの名前付きファイルに解決します。types.xsdで定義した数量の範囲を主文書に適用し、依存ファイルがなければ失敗として報告します。

主スキーマと2つの依存ファイルがXMLの検証結果につながる図。

修正するファイルが分かる

値の型違反ならXML、型定義が見つからないならXSDの確認が必要です。診断にファイル名や行があれば該当入力に移動し、元の制約メッセージを確認できます。

XMLの不正な値から該当行と診断レポートに線がつながる図。

結果を読む前の三つの確認

01

入口となるスキーマを選ぶ

初期パスはmain.xsdです。XML内のxsi:schemaLocationから別のスキーマを選んだり取得したりしません。ルート要素を宣言するファイルを指定してください。

02

参照元からパスを考える

orders/main.xsdから../types.xsdを参照できますが、仮想ルート外へは移動できません。UTF-8ファイルを読み込んだ後でパスを編集し、元のディレクトリー関係を再現できます。

03

編集が終わってから実行

内容やパスの変更は実行中の処理を取り消し、以前の結果を無効にします。Ctrl/Cmd+Enterで再検証してください。表示するスキーマを切り替えるだけなら入力は変わりません。

構造だけでなく型も確認

スキーマの問題を先に検出

libxml2 WASMがXSD 1.0をコンパイルしてから文書を検証します。定義されていない型や不正なスキーマ構造は、文書の値が制約に違反した場合とは別の段階として表示されます。

順序と値の制約

サンプルのquantityは1から100の整数です。必須要素、出現回数、sequenceの順序、名前空間を含む宣言は実際のエンジンで評価し、タグ名の一覧だけでは判定しません。

診断をJSONで保存

完了した適合・不適合の結果をコピーまたはダウンロードできます。段階、エンジン、診断を記録し、未取得の位置は不明のままにします。列が分からない場合に1列目だったと表示することはありません。

受け付ける入力と上限

対応する版
XML 1.0とXSD 1.0に対応し、符号化宣言があればUTF-8を要求します。XSD 1.1のassert、alternative、overrideなどは拒否します。通常のschema version属性はアプリケーションの版であり、エンジンの切替指定ではありません。
明示した参照のみ
include、import、redefineにはschemaLocationが必要です。ASCII英数字、点、下線、ハイフン、スラッシュの相対パスを使い、URL、百分率エスケープ、絶対パス、ルート外参照は受け付けません。xml:baseとDOCTYPEも不可です。
メモリーと時間の制限
XMLと各XSDは各1,000,000文字、主スキーマを含む全体は2,000,000文字・20ファイルまでです。JavaScript文字列の長さで数え、深さは100まで。初期化を含む10秒でWorkerを終了します。これはバイト数ではありません。
診断の保存範囲
診断は200件まで保持し、50件ずつ表示します。省略時はフラグを付け、各メッセージは4,000文字まで保持します。実行環境の失敗や古い結果は出力できず、一度で全エラーが見つかる保証もありません。
業務ルールとは別
XMLの自動修正、スキーマ生成、Schematron、電子署名の確認は行いません。適合しても、金融機関や受信APIが別の規則で拒否することはあります。対象システムの版と業務要件を別途確認してください。
置換を確認してから適用
サンプル、クリア、ファイル読込、依存削除は置換プレビューを表示します。適用後は一度、入力と以前の結果をまとめて戻せます。通常の文字編集は直接反映され、再読込後の保存領域はありません。

XSD検証のよくある質問

XMLの構文チェックとスキーマ検証はどう違いますか?

構文チェックはタグの対応や属性、入れ子を確認します。スキーマ検証は、さらに要素の型や順序などの宣言と照合します。quantityにzeroと書くと整形式でも整数の条件を満たしません。

XMLやXSDの内容は外部に送信されますか?

文書の内容はこのページのWorkerで処理します。依存ファイルの読込も手元のファイルをページに読み取る操作です。レポートのコピーや保存は明示的に操作したときだけ行い、ページ再読込では入力を保持しません。

名前空間やCDATAを含むXMLも検証できますか?

XML 1.0の名前空間とCDATAを含む文書を扱えます。ただし対応する型や名前空間は指定XSDで宣言されている必要があります。CDATAで囲んでも内容に対する型制約がなくなるわけではありません。

要素の宣言が見つからないエラーは何を確認すればよいですか?

主XSDがそのルート要素を宣言しているか、名前空間URIが一致しているかを確認します。接頭辞の見た目だけを変更しても別のURIは一致しません。先にスキーマのコンパイル段階が完了しているかも確認してください。

参照先のXSDを読み込めない場合はどうすればよいですか?

schemaLocationとローカルパスの綴り、大文字小文字、参照元の場所を確認してください。本ページは外部URLを取得しません。必要なファイルをすべて追加し、仮想ルート内の相対参照にしてから実行します。

診断について伝えたいことがありますか?

同じ入力で問題を再現

XSD検証の結果を共有するときは、XMLだけでなく主スキーマと依存パスも揃えてください。保存したレポートは、その時点の入力セットに対する記録です。