Пространства имен XML

После того, как стандарт XML укоренился, были созданы десятки языков разметки XML (часто называемых XML-грамматиками), и многие из них специфичны для определенных областей промышленности, процессов и типов информации. Во многих случаях возникала потребность расширить один тип разметки дополнительными, специфичными для компании элементами, или даже создавать XML-документы, комбинирующие несколько различных XML-грамматик. Это породило проблему. Что случится, если вы захотите комбинировать две XML-грамматики, которые используют одноименные элементы? Как их различать? Похожая, но более типичная проблема возникает, когда приложению нужно различать XML-грамматики в документе. Например, рассмотрим XML-документ, содержащий информацию, связанную с заказами, используя стандарт под названием OrderML, и специфичную для клиента информацию, применяя стандарт под названием ClientML. Этот документ отправляется приложению заполнения заказов, которое интересует только подробности OrderML. Как ему быстро отфильтровать нужную информацию, игнорируя детали, которые его не касаются?

Решением стал стандарт XML Namespaces (Пространства имен XML). Главная идея, положенная в основу этого стандарта, заключается в том, что каждый язык разметки XML имеет свое собственное пространство имен, которое уникально идентифицирует его элементы. Технически пространства имен разрешают неоднозначность, внося ясность о том, к какому языку разметки они относятся.

Все пространства имен XML используют URI (Uniform Resource Identifier — универсальный идентификатор ресурса). Обычно эти URI выглядят, как URL Web-страниц. Например, http://www.mycompany.com/mystandard — типичное имя пространства имен. Хотя пространства имен выглядят как обычные Web-ссылки, они не обязательно являются таковыми. URI используются для пространств имен XML, потому что в этом случае более вероятно, что они будут уникальными. Обычно, если вы создаете новый язык XML, то используете URI, указывающий домен вашего Web-сайта. Таким образом, вы можете быть уверены, что никто другой не использует этот URI. Однако пространство имен не обязано быть URI — допускается любая текстовая последовательность.

Совет. Имена пространств имен должны соответствовать буквально. Если вы изменяете регистр части имени, добавляете завершающие символы / или изменяете любые другие детали, анализатор XML интерпретирует его как совершенно другое пространство имен.

Чтобы указать, что элемент относится к определенному пространству имен, вам нужно просто добавить атрибут xmlns в начальный дескриптор и указать пространство имен. Например, элемент, показанный ниже, является частью пространства имен http://mycompany/OrderML. Если вы не выполните этот шаг, элемент не будет частью какого-либо пространства имен.

<order xmlns="http://mycompany/OrderML"></order>

Было бы весьма утомительно, если бы приходилось печатать полный URI пространства имен при каждом написании элемента в документа XML. К счастью, когда вы таким образом назначаете пространство имен, оно становится пространством имен по умолчанию для всех дочерних элементов. Например, в XML-документе, показанном ниже, элементы <order> и <orderItem> оба помещены в пространство имен http://mycompany/OrderML:

предыдущая    следующая страница    вначало главы    оглавление

526

Hosted by uCoz