АтрибутDOM.Имя

Свойства · Name

Тип: Строка. Содержит имя атрибута.

Полное описание, параметры и ограничения

АтрибутDOM.Имя (DOMAttribute.Name)

АтрибутDOM (DOMAttribute)

Имя (Name)

Доступен, начиная с версии 8.1.

Использование:
Только чтение.
Описание:
Тип: Строка.
Содержит имя атрибута.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Назначить товару XML-идентификатор и работать с узлом атрибута

Атрибут id становится идентификатором только после явной отметки. Остальные атрибуты читаем и удаляем через элемент и коллекцию.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Серверный контекст. Все узлы принадлежат одному документу.

  2. Идентификатор A-01 уникален в пределах учебного документа.

Документ = Новый ДокументDOM("", "products");
Товар = Документ.СоздатьЭлемент("product");
Документ.ЭлементДокумента.ДобавитьДочерний(Товар);
Атрибут = Документ.СоздатьАтрибут("id");
Атрибут.Значение = "A-01";
Товар.УстановитьУзелАтрибута(Атрибут);
Товар.УстановитьАтрибутИдентификатор("id", Истина);
Сообщить(Атрибут.Имя);
Сообщить(Атрибут.Значение);
Сообщить(Атрибут.ЯвляетсяИдентификатором);
Сообщить(Атрибут.Указан);
Сообщить(Атрибут.ЭлементВладелец = Товар);
Сообщить(Документ.ПолучитьЭлементПоИдентификатору("A-01").УзелИдентичен(Товар));
Сообщить(Товар.ЕстьАтрибут("id"));
Сообщить(Товар.ПолучитьАтрибут("id"));
Сообщить(Товар.ПолучитьУзелАтрибута("id").УзелИдентичен(Атрибут));
Товар.УстановитьАтрибут("quantity", "3");
Атрибуты = Товар.Атрибуты;
Сообщить(Атрибуты.Количество());
Для Номер = 0 По Атрибуты.Количество() - 1 Цикл
    Текущий = Атрибуты.Элемент(Номер);
    Сообщить(Текущий.Имя + "=" + Текущий.Значение);
КонецЦикла;
Сообщить(Атрибуты.ПолучитьИменованныйЭлемент("quantity").Значение);
Товар.УдалитьАтрибут("quantity");
Временный = Документ.СоздатьАтрибут("temporary");
Временный.Значение = "yes";
Атрибуты.УстановитьИменованныйЭлемент(Временный);
Атрибуты.УдалитьИменованныйЭлемент("temporary");
Сообщить(Атрибуты.Количество());

Разбор по шагам

  1. Создаём атрибут фабрикой документа, задаём значение и присоединяем к товару.

  2. УстановитьАтрибутИдентификатор отмечает id; после этого документ может найти товар по его значению.

  3. ПолучитьАтрибут возвращает строку, ПолучитьУзелАтрибута — объект атрибута.

  4. Обходим коллекцию без предположения о порядке; удаляем quantity и временный атрибут.

Как проверить результат

  1. Найденный по A-01 элемент идентичен товару; атрибут принадлежит товару и имеет признак идентификатора.

  2. Перед удалением есть 2 атрибута, после всей последовательности остаётся только id: количество 1.

Ожидаемый результат

Товар имеет настоящий DOM-идентификатор, работа с атрибутом и его строковым значением различена.

На что обратить внимание

  1. Имя id само по себе не гарантирует статус идентификатора: нужна отметка или соответствующее объявление схемы.

  2. Порядок атрибутов XML незначим; не полагайтесь на то, что id имеет индекс 0.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Переименовать XML-товар и атрибут с сохранением нового узла

После переименования может вернуться прежний или новый объект. Поэтому продолжаем работу только с возвращённым узлом и проверяем его актуальные имя и URI.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Документы и все узлы создаются в памяти на сервере. Внешние XML, DTD, сетевые схемы и файлы не загружаются.

  2. Сначала оставьте учебные имена и значения неизменёнными. После контрольного запуска меняйте по одному условию.

  3. Преобразования выполняются только над собственным XML в памяти. Примеры не читают файлы, внешние DTD, URL или данные информационной базы.

  4. У методов DOM возвращаемый узел сохраняйте в переменную: исходная ссылка и результат операции не всегда обозначают один объект.

URI = "urn:guide:products";
Документ = Новый ДокументDOM(URI, "g:products");
Корень = Документ.ЭлементДокумента;
Корень.УстановитьСоответствиеПространстваИмен("g", URI);
Товар = Документ.СоздатьЭлемент(URI, "g:product");
Атрибут = Документ.СоздатьАтрибут("code");
Атрибут.Значение = "A-01";
Товар.УстановитьУзелАтрибута(Атрибут);
Товар.ДобавитьДочерний(Документ.СоздатьТекстовыйУзел("Книга"));
Корень.ДобавитьДочерний(Товар);
Товар = Документ.ПереименоватьУзел(Товар, URI, "g:item");
Сообщить(Товар.ЛокальноеИмя = "item");
Сообщить(Товар.Префикс = "g");
Сообщить(Товар.URIПространстваИмен = URI);
Сообщить(Товар.РодительскийУзел = Корень);
Сообщить(Товар.ТекстовоеСодержимое = "Книга");
Атрибут = Товар.ПолучитьУзелАтрибута("code");
Атрибут = Документ.ПереименоватьУзел(Атрибут, "", "sku");
Сообщить(Атрибут.Имя = "sku");
Сообщить(Атрибут.Значение = "A-01");
Сообщить(Товар.ПолучитьАтрибут("code") = Неопределено);
Сообщить(Товар.ПолучитьАтрибут("sku") = "A-01");
Сообщить(Корень.ПервыйДочерний.УзелИдентичен(Товар));

Разбор по шагам

  1. Создаём namespace-aware product и обычный атрибут code; оба принадлежат собственному документу.

  2. ПереименоватьУзел возвращает результат, который сразу присваиваем Товар. Имя становится g:item, URI не меняется, содержимое Книга сохраняется.

  3. Заново получаем атрибут актуального элемента и переименовываем code в sku. Атрибут также сохраняем из результата операции.

  4. Проверяем, что code исчез из актуального элемента, sku содержит A-01 и корень ссылается именно на актуальный Товар.

Как проверить результат

  1. Все десять логических сообщений дают Истина.

  2. Получена структура products/item с атрибутом sku=A-01 и текстом Книга.

Ожидаемый результат

Показан корректный шаблон переименования без предположения о сохранении идентичности исходного узла.

На что обратить внимание

  1. Метод предназначен только для ЭлементDOM и АтрибутDOM. Для текста или комментария он вызывает исключение.

  2. Узел должен принадлежать документу, вызывающему метод. Переименование не является импортом из другого документа.

  3. Не сохраняйте старую ссылку на атрибут до переименования элемента как единственный источник истины: реализация может заменить элемент новым узлом.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.