名前空間ベース検証ディスパッチ言語(NVDL)は、複数の名前空間と統合されたXML文書を検証するためのXMLスキーマ言語です。これはISO / IEC規格であり、DSDLスキーマ仕様のパート4にあたります。NVDLの開発の多くは、旧来の名前空間ルーティング言語(Namespace Routing Language)に基づいています。
ほとんどのXML言語は、単一のXML名前空間に基づいています。これらの場合、特定の名前空間内のXML要素はその言語に属し、別の名前空間内の要素は別の言語に属するという前提があります。多くのXML言語では、他の名前空間の任意の要素の使用が許可されています。
問題は、これらのハイブリッド文書を検証しようとする際に発生します。各言語はそれぞれ固有のXMLスキーマで定義されていますが、スキーマ間にはリンクがありません。
NVDLの目的は、名前空間に基づいてそのようなリンクを提供することです。スキーマバリデーターをNVDLスキーマに関連付けることで、バリデーターは単一のドキュメントを検証するために複数のスキーマを使用でき、ドキュメントで使用されている名前空間に基づいてスキーマを切り替えることができます。
NVDLドキュメントにはルールの一覧が含まれており、各ルールには、そのルールが真である場合に実行される1つ以上のアクションが定義されています。ルールには、特定の名前空間とモード設定が含まれます。NVDLは、モードをドキュメントの処理に伴って変化する特定の状態として認識します。
ルールが真の場合、アクションが実行されます。アクションには、スキーマの検証、インスタンスドキュメントの無効宣言、インスタンスドキュメントのこの部分の有効性の承認、親ドキュメントと同様に検証を続行するなどが含まれます。アクションによって、現在のNVDLモードを変更することもできます。ルールが真の場合、複数のアクションを実行できます。これにより、インスタンスドキュメントのセクションを、異なるタイプの複数のスキーマで検証することが可能になります。
<rules xmlns= "http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0" > <namespace ns= "http://www.w3.org/1999/xhtml" > <validate schema= "xhtml.rng" /> </namespace> <namespace ns= "http://www.w3.org/2000/svg/" > <validate schema= "svg.sch" /> </namespace> <anyNamespace> <reject/> </anyNamespace> </rules>このNVDLスキーマは、XHTML 1.0名前空間を使用する部分をRELAX NGスキーマで検証し、 SVG 1.0名前空間を使用する部分をSchematronスキーマで検証し、それ以外の名前空間を持つ要素が見つかった場合は、ドキュメントを無効として拒否します。