ТипАтрибутаXML.ENTITY

Свойства · ENTITY

Сущность.

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

ТипАтрибутаXML.ENTITY (XMLAttributeType.ENTITY)

ТипАтрибутаXML (XMLAttributeType)

ENTITY (ENTITY)

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

Описание:
Сущность.
Использование в версии:

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

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

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

Прочитать ТипАтрибутаXML.ENTITY своей XML-строки

Во внутреннем DTD собственной строки объявлен конкретный тип атрибута value. Его тип читается по индексу 0 у настоящего начального элемента book, не угадывается по тексту значения.

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

Тело серверной процедуры собственной учебной обработки. Диагностика объявленного типа атрибута в собственной строке, без внешних ресурсов.

Подготовка

  1. Тело серверной процедуры своей учебной обработки. Вся XML-строка и внутренние объявления DTD включены в пример; внешние файлы и сеть не используются.

  2. Параметры чтения не игнорируют внутренние объявления DTD. ТипПроверкиXML.НетПроверки означает отсутствие проверки документа на полную корректность DTD, а не утверждение, что документ валиден.

  3. ENTITY / ENTITIES ссылаются на объявленные непроанализированные сущности NDATA. URN здесь только идентификаторы объявления, содержимое сущностей не подставляется и картинки не загружаются.

  4. Для IDREF / IDREFS показан тип объявления, не проверка существования целевого ID. Не переносите такое отключение проверки в рабочий импорт непроверенного XML.

XML = "<!DOCTYPE book [<!ELEMENT book EMPTY><!ATTLIST book value ENTITY #REQUIRED><!NOTATION png SYSTEM ""urn:learn:png""><!NOTATION jpeg SYSTEM ""urn:learn:jpeg""><!ENTITY bookPicture SYSTEM ""urn:learn:book-picture"" NDATA png><!ENTITY albumPicture SYSTEM ""urn:learn:album-picture"" NDATA jpeg>]><book value=""bookPicture""/>";
Параметры = Новый ПараметрыЧтенияXML("1.0", "", ПробельныеСимволыXML.ПоУмолчанию, ТипПроверкиXML.НетПроверки, Ложь, Ложь, Ложь, Ложь, Ложь, Ложь);
Чтение = Новый ЧтениеXML;
Попытка
    Чтение.УстановитьСтроку(XML, Параметры);
    Пока Чтение.Прочитать() Цикл
        Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "book" Тогда
            ТипАтрибута = Чтение.ТипАтрибута(0);
            Сообщить("Тип первого атрибута: " + Строка(ТипАтрибута));
            Сообщить("Совпадает с выбранным: " + Строка(ТипАтрибута = ТипАтрибутаXML.ENTITY));
        КонецЕсли;
    КонецЦикла;
    Чтение.Закрыть();
Исключение
    Чтение.Закрыть();
    ВызватьИсключение;
КонецПопытки;

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

  1. Внутреннее объявление ATTLIST задаёт тип value. Для ENUMERATION используется список допустимых лексических значений, для NOTATION — объявленные нотации.

  2. ТипАтрибута принимает числовой индекс, не строковое имя. У book в примере ровно один атрибут, поэтому индекс 0 конкретен.

  3. Чтение закрывается при успехе и исключении. Выведены фактический тип и сравнение с выбранной константой.

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

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

  2. Если реализация чтения не учитывает тип из DTD в указанном режиме, диагностический вывод это покажет; пример не объявляется доказательством валидации документа.

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

Константа типа сопоставлена с реальным атрибутом собственной XML-строки.

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

  1. ТипАтрибутаXML не равен типу значения XDTO или типу свойства метаданных 1С.

  2. Непроанализированная сущность — не текстовая сущность для подстановки &имя; в содержимое XML.

  3. В этом уроке нет внешнего DOCTYPE SYSTEM, загрузки изображения или записи данных 1С; BSL при сборке справочника не выполняется.

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

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

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

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

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