Нотация.
Полное описание, параметры и ограничения
ТипАтрибутаXML.NOTATION (XMLAttributeType.NOTATION)
ТипАтрибутаXML (XMLAttributeType)
NOTATION (NOTATION)
Доступен, начиная с версии 8.1.
Описание:
Нотация.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Прочитать ТипАтрибутаXML.NOTATION своей XML-строки
Во внутреннем DTD собственной строки объявлен конкретный тип атрибута value. Его тип читается по индексу 0 у настоящего начального элемента book, не угадывается по тексту значения.
Где и как запускать
Тело серверной процедуры собственной учебной обработки. Диагностика объявленного типа атрибута в собственной строке, без внешних ресурсов.
Подготовка
Тело серверной процедуры своей учебной обработки. Вся XML-строка и внутренние объявления DTD включены в пример; внешние файлы и сеть не используются.
Параметры чтения не игнорируют внутренние объявления DTD. ТипПроверкиXML.НетПроверки означает отсутствие проверки документа на полную корректность DTD, а не утверждение, что документ валиден.
ENTITY / ENTITIES ссылаются на объявленные непроанализированные сущности NDATA. URN здесь только идентификаторы объявления, содержимое сущностей не подставляется и картинки не загружаются.
Для IDREF / IDREFS показан тип объявления, не проверка существования целевого ID. Не переносите такое отключение проверки в рабочий импорт непроверенного XML.
XML = "<!DOCTYPE book [<!ELEMENT book EMPTY><!ATTLIST book value NOTATION (png|jpeg) #REQUIRED><!NOTATION png SYSTEM ""urn:learn:png""><!NOTATION jpeg SYSTEM ""urn:learn:jpeg"">]><book value=""png""/>";
Параметры = Новый ПараметрыЧтенияXML("1.0", "", ПробельныеСимволыXML.ПоУмолчанию, ТипПроверкиXML.НетПроверки, Ложь, Ложь, Ложь, Ложь, Ложь, Ложь);
Чтение = Новый ЧтениеXML;
Попытка
Чтение.УстановитьСтроку(XML, Параметры);
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "book" Тогда
ТипАтрибута = Чтение.ТипАтрибута(0);
Сообщить("Тип первого атрибута: " + Строка(ТипАтрибута));
Сообщить("Совпадает с выбранным: " + Строка(ТипАтрибута = ТипАтрибутаXML.NOTATION));
КонецЕсли;
КонецЦикла;
Чтение.Закрыть();
Исключение
Чтение.Закрыть();
ВызватьИсключение;
КонецПопытки;Разбор по шагам
Внутреннее объявление ATTLIST задаёт тип value. Для ENUMERATION используется список допустимых лексических значений, для NOTATION — объявленные нотации.
ТипАтрибута принимает числовой индекс, не строковое имя. У book в примере ровно один атрибут, поэтому индекс 0 конкретен.
Чтение закрывается при успехе и исключении. Выведены фактический тип и сравнение с выбранной константой.
Как проверить результат
Показан тип первого атрибута собственной строки и результат сравнения.
Если реализация чтения не учитывает тип из DTD в указанном режиме, диагностический вывод это покажет; пример не объявляется доказательством валидации документа.
Ожидаемый результат
Константа типа сопоставлена с реальным атрибутом собственной XML-строки.
На что обратить внимание
ТипАтрибутаXML не равен типу значения XDTO или типу свойства метаданных 1С.
Непроанализированная сущность — не текстовая сущность для подстановки &имя; в содержимое XML.
В этом уроке нет внешнего DOCTYPE SYSTEM, загрузки изображения или записи данных 1С; BSL при сборке справочника не выполняется.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.