xsd を使用して xml ファイルを検証しており、意味のあるメッセージをユーザーに返したいと考えています。xsd でカスタム メッセージを作成する方法はありますか。
2 に答える
「いいえ」と「はい」(または「はい、しかし...」)の答えは、あなたが望むものに応じて、両方ともここに当てはまります。残念ながら、すべての実用的な目的の答えは「いいえ」です。
XSD 仕様は、API やユーザー インターフェイスを指定または制約しないため、特定の制約に違反した場合にユーザーにどのようなメッセージを表示するかを XSD スキーマ ドキュメントで指定する標準的な方法はありません。スキーマ プロセッサが何らかの方法でエラー メッセージを制御できるようにすることは完全に正当であり、xs:appinfo 要素はそのようなことを実現可能にするために一部含まれています。しかし、実際にそのような機能を提供するスキーマバリデーターを私は知りません (提供しているものを知りたいです)。
考えられる回避策の 1 つ: XSD は、バリデーターが使用する特定のエラー コードを提案します。そのため、バリデーターが検証結果の API を提供している場合は、発生したエラーを特定し、エラー コードと位置情報を使用して、適切なエラー メッセージを生成することができます。ユーザー。プロセッサが解析可能な出力を生成する場合も同様です。
ユーザーが指定できる気の利いたエラー メッセージを取得する最も簡単な方法は、スキーマの作成者が指定したエラー メッセージをプロセッサが使用することを規定する Schematron を使用することです。(国際化に対処するためにどこかで手を振っていると思いますが、詳細はわかりません。)
一連のルールを使用するSchematronを使用します (それぞれにカスタム エラー メッセージが表示されます)。ドキュメントを検証します。これらのエラー メッセージはすべて、入力ドキュメント内の対応するエラーの場所 (XPath) と共に、SVRL と呼ばれる検証レポートに表示されます。