XMLNSC パーサーは、メッセージ・フロー内のどのポイントでも、ハイパフォーマンスで、標準準拠の XML スキーマ妥当性検査を提供します。
入力 XML メッセージまたはメッセージ・ツリーの妥当性検査は、デプロイされた XML スキーマに照らして実行されます。
妥当性検査は、構文解析とは異なります。 構文解析時には、XMLNSC パーサーは XML 仕様に従って入力文書が整形式 XML であることを常に検査します。 妥当性検査が使用可能な場合、XMLNSC パーサーは XML 文書が XML スキーマの規則に従っていることも検査します。
XML スキーマに従って XML 文書を妥当性検査するメッセージ・フローを構成するには、以下のタスクを完了する必要があります。
XML スキーマは、アプリケーション内、アプリケーションによって参照されるライブラリー内、またはメッセージ・セット内にデプロイすることができます。
スキーマがアプリケーションの一部としてデプロイされている場合は、アプリケーションによって参照されるプロジェクトのいずれかにそのスキーマを含める必要があります。
スキーマがライブラリーにデプロイされている場合、アプリケーションは、別のアプリケーションの一部としてデプロイされている場合でも、そのライブラリーを参照する必要があります。
スキーマがメッセージ・セットにデプロイされている場合は、以下のステップを実行する必要があります。
WebSphere Message Broker により使用されるすべての XML スキーマは、 メッセージ・セット内のメッセージ定義ファイルとして作成される必要があります。
XML スキーマ妥当性検査用のメッセージ・セットを作成し、デプロイするには、以下のようにします。
XMLNSC 妥当性検査は、http://www.w3.org/TR/xmlschema-1/ および http://www.w3.org/TR/xmlschema-2/ から参照できる仕様で定義されている XML スキーマ v1.0 に完全に準拠しています。 ただし、以下の若干の例外があります。
XML v1.1 仕様に準拠する文書は妥当性検査できますが、XML スキーマ v1.0 文書は XML v1.0 に準拠していなければならないため、サポートは制限されています。
一例として、XML v1.1 タグ名を XML スキーマ v1.0 で宣言できない場合もあります。 この制限は、XMLNSC パーサーのインプリメンテーションによって課されるものではなく、XML スキーマ v1.0 の制限です。
妥当性検査エラーは、XML スキーマで定義された規則を XML 文書が破る場合に生じるエラーです。 XML スキーマ標準は、これらの規則の厳密な内容と、その適用方法を指定します。 XMLNSC パーサーが発行する妥当性検査エラーには、エラーと違反された XML スキーマ規則とをリンクさせる情報が含まれています。
XML schema validation error '[cvc-error key: error description]'
'cvc-minInclusive-valid: The value "2" is not valid with respect to the minInclusive facet
with value "3" for type "po:itemCountType".'
'cvc-complex-type.2.4.a: Expecting element with local name "numItems" but saw "totalValue".'
違反されている XML スキーマ規則を見つけるには、XML スキーマ仕様をオープンして、エラー・キーを検索します。例 1: http://www.w3.org/TR/xmlschema-1/ を開いて、‘cvc-minInclusive-valid’を検索します。 minInclusive ファセットの XML スキーマ規則へのリンクをたどります。
例 2: http://www.w3.org/TR/xmlschema-1/ を開いて、‘cvc-complex-type’を検索します。 複合タイプの内容の妥当性検査のための XML スキーマ規則へのリンクをたどります。 この場合、エラー・キーには追加情報が含まれます。 ‘2.4.a’は、違反されたまさにその副規則を参照しています。 規則の検索時にこれは含めるべきではありません。
XML スキーマ仕様では十分な情報が提供されない場合、検索エンジンを使用してさらに情報を見つけることもできます。 XML スキーマ標準は非常に幅広く使用されており、数多くのオンラインのチュートリアルや他のリソースが入手可能です。