Создает и устанавливает в элемент атрибут соответствия пространства имен.
Синтаксис
УстановитьСоответствиеПространстваИмен(<Префикс>, <URIПространстваИмен>, <Согласовать>)УстановитьСоответствиеПространстваИмен(<URIПространстваИмен>, <Согласовать>)Полное описание, параметры и ограничения
ЭлементDOM.УстановитьСоответствиеПространстваИмен (DOMElement.SetNamespaceMapping)
ЭлементDOM (DOMElement)
УстановитьСоответствиеПространстваИмен (SetNamespaceMapping)
Доступен, начиная с версии 8.1.
Вариант синтаксиса: Основной
Синтаксис:
УстановитьСоответствиеПространстваИмен(<Префикс>, <URIПространстваИмен>, <Согласовать>)
Параметры:
<Префикс> (обязательный)
Тип: Строка.
Префикс пространства имен.
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен.
<Согласовать> (необязательный)
Тип: Булево.
Признак необходимости согласования префиксов дочерних элементов и атрибутов для указываемого пространства имен. Для атрибутов согласование выполняется только в случае непустого существующего префикса.
Значение по умолчанию: Ложь.
Описание варианта метода:
Если для данного префикса уже установлено соответствие пространству имен, то никаких действий производиться не будет, и будет возвращено Неопределено.
Причины вызова исключений:
указанный префикс содержит символы, недопустимые стандартом XML, соответствующим версии XML, указанной в свойстве ВерсияXML;
данный узел в режиме Только для чтения;
<Префикс> и <URIПространстваИмен> не соответствуют спецификации XML Namespaces.
Вариант синтаксиса: Автоматическое создание префикса
Синтаксис:
УстановитьСоответствиеПространстваИмен(<URIПространстваИмен>, <Согласовать>)
Параметры:
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен.
<Согласовать> (необязательный)
Тип: Булево.
Признак необходимости согласования префиксов дочерних элементов и атрибутов для указываемого пространства имен. Для атрибутов согласование выполняется только в случае непустого существующего префикса.
Значение по умолчанию: Ложь.
Описание варианта метода:
Префикс соответствия пространства имен будет сгенерирован автоматически. Если для данного пространства имен уже установлено соответствие, то никаких действий производиться не будет и будет возвращен соответствующий узел-атрибут.
Причины вызова исключений:
указанный URI пространства имен содержит символы, недопустимые стандартом XML, соответствующим версии XML, указанной в свойстве ВерсияXML.
данный узел в режиме Только для чтения.
Возвращаемое значение:
Тип: АтрибутDOM, Неопределено.
Возвращает - атрибут, соответствующий созданному соответствию.
Если для данного префикса уже установлено соответствие пространству имен, то никаких действий производиться не будет, и будет возвращено Неопределено.
Описание:
Создает и устанавливает в элемент атрибут соответствия пространства имен.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Найти XML-товар XPath с другим префиксом того же пространства имён
В документе префикс g, в запросе — x. Они могут отличаться, если оба связаны с одним URI; поиск без пространства имён не совпадает.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.
Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.
URI = "urn:guide:products";
Документ = Новый ДокументDOM(URI, "g:products");
Корень = Документ.ЭлементДокумента;
Корень.УстановитьСоответствиеПространстваИмен("g", URI);
Товар = Документ.СоздатьЭлемент(URI, "g:product");
Товар.УстановитьАтрибут("code", "A-01");
Товар.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Книга"));
Корень.ДобавитьДочерний(Товар);
Сообщить(Товар.Префикс = "g");
Сообщить(Товар.ЛокальноеИмя = "product");
Сообщить(Товар.URIПространстваИмен = URI);
Карта = Новый Соответствие;
Карта.Вставить("x", URI);
ПоКарте = Новый РазыменовательПространствИменDOM(Карта);
ПоПаре = Новый РазыменовательПространствИменDOM("x", URI);
ПоУзлу = Новый РазыменовательПространствИменDOM(Корень);
Сообщить(ПоКарте.НайтиURIПространстваИмен("x") = URI);
Сообщить(ПоПаре.НайтиURIПространстваИмен("x") = URI);
Сообщить(ПоУзлу.НайтиURIПространстваИмен("g") = URI);
Результат = Документ.ВычислитьВыражениеXPath("/x:products/x:product[@code='A-01']", Документ,
ПоКарте, ТипРезультатаDOMXPath.УпорядоченныйСнимокУзлов);
Сообщить(Результат.РазмерСнимка = 1);
Если Результат.РазмерСнимка = 1 Тогда
Сообщить(Результат.ЭлементСнимка(0).ТекстовоеСодержимое = "Книга");
КонецЕсли;
БезПространства = Документ.ВычислитьВыражениеXPath("/products/product", Документ,
ПоКарте, ТипРезультатаDOMXPath.УпорядоченныйСнимокУзлов);
Сообщить(БезПространства.РазмерСнимка = 0);Разбор по шагам
URI urn:guide:products — идентификатор пространства имён, не URL для скачивания. Документ не отправляет запросов.
При создании каждого элемента указываем URI и квалифицированное имя. Атрибут code в этом примере без пространства имён.
Разыменователь связывает префикс XPath x с тем же URI, что у элементов с префиксом g.
Три конструктора создают разыменователь по карте, паре префикс/URI и существующему узлу. Без префикса XPath ищет элементы без пространства имён, которых здесь нет.
Как проверить результат
Префикс элемента g, локальное имя product, URI заданный; проверки трёх разыменователей Истина.
Запрос с x находит один товар Книга, хотя исходный элемент называется g:product.
Запрос без пространства имён даёт снимок размера 0, не первый попавшийся product.
Ожидаемый результат
Показано разрешение пространств имён XPath без привязки к буквальному префиксу исходного XML.
На что обратить внимание
Одинаковое локальное имя в разных URI означает разные расширенные имена.
Не удаляйте namespace из внешнего XML только ради удобства поиска: это изменяет контракт.
Префикс xml зарезервирован; учебные g/x не следует произвольно заменять им.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.