Консалтинг и автоматизация в области управления
эффективностью банковского бизнеса

Журнал ВРМ World

Новая XML-спецификация для поддержки различных пространств имен

Согласно пресс-релизу, опубликованному авторитетным информационным ресурсом XML Cover Pages, этим летом появилась еще одна весьма интересная спецификация - Namespace Routing Language (NRL, Язык маршрутизации пространств имен). NRL - XML-язык для комбинирования схем для различных пространств имен, позволяющий схемам, которые он объединяет, использовать произвольные языки схем. Помимо спецификации в этот релиз вошли учебное пособие и пример реализации в виде дистрибутива Jing (Валидатор RELAX NG на Java). По заявлению автора спецификации Джеймса Кларка (James Clark), NRL является "преемником" языка Modular Namespaces (MNS, язык модульных пространств имен) и задуман как еще один шаг на пути к Языкам описания схемы документа (Document Schema Definition Languages, DSDL).

Известно, что Рекомендация консорциума W3C "Пространства XML" разрешает составлять XML-документ из элементов и атрибутов, принадлежащих различным независимым пространствам имен: каждое из этих пространств имен может обладать своей схемой, а схемы для различных пространств имен могут быть на различных языках схем. Однако, возникает вопрос о том, как эти схемы могут быть скомпонованы, чтобы позволить проверять на допустимость весь документ. Язык NRL является попыткой решить эту проблему. Перечислим следующие достоинств этого языка:

  • Осуществляет поддержку сосуществования языков схем. Например, если имеется схема для XHTML на RELAX NG и схема для SVG на W3C XML Schema, NRL позволяет проверять на допустимость документ XHTML, в который вложен SVG, устранив необходимость преобразовывать любую из схем.
  • Разрешает реализовывать непредусмотренные расширения. Предположим, например, что имеется схема для XHTML, которая не допускает расширение, однако, желательно встроить SVG в XHTML. NRL позволяет сделать это, не добавляя групповые символы (wildcards) в схему XHTML.
  • Упрощает составление расширяемых схем. Вместо "засорения" схемы групповыми символами, можно написать простую схему без этих символов, а затем использовать NRL для определения того, какой вид расширения допустим.
  • Поддерживает "прозрачные" пространства имен. Под прозрачным пространством имен подразумевается пространство t, где требуется проверить на допустимость <x><t:y><z/></t:y></x> как <x><z></x>. Эта функциональность удобна для пространств имен, которые обеспечивают шаблоны или управление версиями.
  • Допускает контекстуальный контроль за расширениями. Если имеется W3C XML Schema, которая использует групповые символы в различных контекстах, можно использовать NRL, чтобы контролировать, какое пространство имен допустимо в каждом контексте.
  • Позволяет выполнять одновременную проверку на допустимость. Можно указать, что отдельное пространство имен или весь документ проверяется на допустимость по нескольким схемам, которые могут быть на различных языках схем. Таким образом, возможно проверять документ на допустимость и по схеме W3C XML Schema, и по схеме Schematron.
  • Для RELAX NG язык NRL можно использовать, чтобы обеспечить некоторые основанные на пространствах имен свойства модульности, которые встроены в XSD.