私のアプリケーションがサードパーティの SOA サーバーに送信するデータの中には、複雑な XML があります。サーバー所有者は XML スキーマ ( .xsd
) を提供しますが、サーバーは意味のないメッセージで無効な XML を拒否するため、送信する前にローカルで検証する必要があります。
スタンドアロンの XML スキーマ バリデータを使用することもできますが、遅いのは主にスキーマ ファイルの解析に時間がかかるためです。そこで、すでに解析されたスキーマをキャッシュするHTTP サーバーの形式で、独自のスキーマ バリデーターを (問題がある場合は Java で) 作成しました。
問題は、検証プロセスの過程で多くのことがうまくいかないことです。予期しない例外と検証の成功以外:
- サーバーは、指定されたスキーマ ファイルを見つけられない可能性があります
- 指定されたファイルは有効なスキーマ ファイルではない可能性があります
- XML はスキーマ ファイルに対して無効です
これは HTTP サーバーなので、意味のあるステータス コードをクライアントに提供したいと思います。上記のすべてのケースで、サーバーは400エラー ( Bad request ) で応答する必要がありますか? それとも、HTTP とは関係なく、本文にメッセージを入れて200に応答する必要がありますか? 他の提案はありますか?
更新: メイン アプリケーションはRubyで記述されていますが、これには優れた xml スキーマ検証ライブラリがないため、別の検証サーバーは過度に設計されていません。