Namespace-based Validation Dispatching Language ( NVDL ) — это язык схемы XML для проверки документов XML, которые интегрируются с несколькими пространствами имен . Это стандарт ISO / IEC и часть 4 спецификации схемы DSDL . Большая часть работы над NVDL основана на более старом Namespace Routing Language .
Большинство языков XML основаны на одном пространстве имен XML. В этих случаях ожидается, что элементы XML в определенном пространстве имен принадлежат этому языку, а элементы в другом пространстве имен принадлежат другому языку. Многие языки XML допускают использование произвольных элементов из других пространств имен.
Проблема возникает при попытке проверки этих гибридных документов. Каждый язык определяется определенной схемой XML, но между схемами нет связи.
Цель NVDL — обеспечить эту связь на основе пространств имен. Связывая валидатор схемы со схемой NVDL, валидатор может использовать несколько схем для проверки одного документа, переключаясь между ними на основе пространств имен, используемых в этом документе.
Документы NVDL содержат список правил, каждое из которых имеет одно или несколько действий, которые нужно выполнить, когда это правило истинно. Правила включают определенное пространство имен и настройку режима. 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 и отклонит документ как недействительный, если он встретит элементы с любым другим пространством имен.