Namespace-based Validation Dispatching Language

Namespace-based Validation Dispatching Language (NVDL; 名前空間に基づく検証委譲言語) は、複数のXML名前空間を使って記述されたXML文書の妥当性を検証するためのスキーマ言語である。
NVDLは、ISO/IEC 19757 文書スキーマ定義言語 (DSDL) の第4部として標準化されている。
NVDLを構成している技術の大部分は、ジェームズ・クラークが設計した Namespace Routing Language (NRL) に由来する。
またNVDLおよびNRLは、村田真などの人々が設計した RELAX Namespace を源流としている。

複数の名前空間を使って記述されたXML文書の妥当性を検証する 

現在作成されているXML文書の多くは、単一のXML名前空間に基づいているが、複数の名前空間に基づいてXML文書を記述することもできる。
XML文書を構成する要素は、それぞれ、その要素が由来する名前空間に属する。

従来の単一の名前空間しかサポートしない妥当性検証のしくみでは、複数の名前空間を使って記述されたXML文書の妥当性を検証することができない。

NVDLの目的は、複数の名前空間を使って記述されたXML文書の妥当性を検証するしくみを提供することである。
NVDLの妥当性検証器 (NVDLのバリデータ) は、複数のスキーマを使って記述された (すなわち複数の名前空間を使って記述された) XML文書の妥当性を検証することができる。
NVDLの妥当性検証器は、検証の対象となるXML文書の要素が属する名前空間に応じて、対応するスキーマをきりかえながら、妥当性を検証する。

NVDLのスキーマの記述方法 

NVDLのスキーマは、規則のリストであり、またそれ自身がXML文書でもある。
おのおのの規則には、その規則が真の場合に実行するべき一つ以上のアクションがある。

妥当性の検証中にある規則が真となった場合に、対応するアクションが実行される。
アクションの種類としては次のようなものがある。
 スキーマに基づいて妥当性を検証する
 XML文書が妥当でないことの宣言
 対象とするXML文書の断片を妥当とする
 親要素と同じ方法で妥当性検証を続行する
アクションは、検証中のNVDLのモードに基づいて変更することもできる。
ある規則が真である場合に、複数のアクションを実行することも可能である。
このため、異なるスキーマ言語で記述されたスキーマにもとづいて、複数の名前空間を使って記述されたXML文書の妥当性を検証することができる。

NVDLのスキーマの例 

次にNVDLのスキーマの例を示す。
このNVDLスキーマを使うことで、XML文書に対して、XHTML 1.0 のXML名前空間を使って記述された部分を XHTML 1.0 の RELAX NG スキーマで妥当性を検証し、SVG の名前空間を使って記述された部分をSVGのスキマトロンのスキーマで妥当性を検証することが、できる。
なおこのNVDLスキーマでは、検証中に XHTML 1.0 でもSVGでもない名前空間で記述された部分がみつかった場合には、そのXML文書は妥当でないと認識される。

<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の情報
 An introduction to NVDL

JIS
ISO/IEC標準
XML
データモデリング