About NVDL

NVDL, which means Namespace-based Validation Dispatching Language, is “Part 4 of ISO/IEC 19757 DSDL” (Document Schema Definition Languages) international standard, see [NVDL]. NVDL is a simple “meta-schema” language which allows to control the processing and validation of compound documents. The gist of NVDL is dividing XML document instances into sections, each of which contains elements from a single namespace. Those sections can than be combined or manipulated in various ways to create so called validation candidates. Every candidate which is a subset of another candidate is filtered out. The remaining fragments are finally send for validation against different subschemas[1]. As NVDL is schema language transparent, subschemas may be written in any preferable schema language e. g. Relax NG, XML Schema, Schematron, DTD etc...

NVDL has many advantages over other similar approaches. It is a standardized and easy to understand way to define compound document validation processes. With NVDL we can allow or ban different vocabularies inside of our instances completely or just in a particular context.

With NVDL we are not bound to a specific schema language, instead we can use any language we prefer and we may also combine different schema languages during a single validation process. Where using Relax NG or XML Schema for compound document validation leads to unifomity (as we are forced to convert all our schemas to one language), NVDL means variety, as we can choose the schema language with best suits our vocabulary need. We don't need to look just at the mainstream ones. This is important also in terms of reusability, as in the real world, XML vocabularies are usually described using different schema languages. We may prefer to reuse those, instead of writing new schemas.

Imagine, we have a set of subschemas for different vocabularies. Using NVDL, it's straightforward to create various NVDL definitions for all different combinations of such vocabularies, without the need to introduce any changes to the particular subschemas at all.

[1] Subschema is defined in the NVDL specification as a schema referenced by the NVDL script.