Есть XML файл с секциями следующего вида:

<birth_date>
& lt; ![CDATA[25.04.1990]]& gt; </birth_date>

Сейчас читается через ФабрикаXDTO.ПрочитатьXML()
Но:
1) секции CDATA не читаются как текст (т.е. в значении свойства XDTO объекта остается текст "<CDATA...")
При замене
& lt;
и
& gt;
на </> уже читается правильно. Правильно ли я понимаю, что сам XML в этом отношении некорректный и для обрамления CDATA меньше/больше не должны быть представлены как & lt;/& gt; ?
Можно ли использовать для обхода этой проблемы ПреобразованиеXSL и как?
2) даже если заменить на </>, то в свойстве остается перевод строки. Как этого избежать?

Т.е. что надо сделать, чтобы вышеуказанная секция прочиталась просто как строка "25.04.1990"?

В вопросе специально поставлены пробелы между & и lt;/:gt; Я не знаю как тут заэкранировать, чтобы при публикации отображалось как есть, без преобразования)
---
Из справки:
Секция CDATA может находиться повсюду, где могут размещаться символьные данные. Использование секции CDATA позволяет избежать обработки блока текста, содержащего символы, которые в других случаях распознавались бы как разметка. Секция CDATA начинается со строки "<![CDATA[" и заканчивается строкой "]]>":]

Секции CDATA

[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'

В секции CDATA распознается только один элемент разметки - строка CDEnd. Поэтому все символы левой угловой скобки и амперсанта могут предстать здесь в своем обычном текстовом виде. Эти символы не нужно (да и невозможно) маскировать с помощью комбинаций "&--lt--;" и "&--amp--;". (добавил тире в конце, чтобы правильно отображалось, не заменялись символы)
---
Текст в CDATA не анализируется.
Для парсера это просто индикатор того, что это текст, а не разметка.
---
что надо сделать, чтобы вышеуказанная секция прочиталась просто как строка "25.04.1990"?
Например для фрагмента, источник:

```1c
    <trend sota="mega">
    <![CDATA[Текст]]></trend>
```

```1c
    Если Чтение.ИмяУзла="trend" И Чтение.ТипУзла=ТипУзлаXML.НачалоЭлемента И Чтение.ЗначениеАтрибута("sota")="mega" Тогда
    флаг=1;
    КонецЕсли;

    Если флаг=1 и Чтение.ТипУзла=ТипУзлаXML.Текст тогда
    флаг = 0;
    Сообщить(Чтение.Значение);
    КонецЕсли;
```
---
секция прочиталась просто как строка "25.04.1990"
 ИначеЕсли (ТипУзла=ТипУзлаXML.СекцияCDATA) Тогда
                Сообщить(Смещ+"CDATA: <"+ХМЛ.Значение+">");

Источник
Пример кода (нажать на строку, чтобы увидеть код)
```1c
    &НаКлиенте
    Функция ВывестиЭлем(ХМЛ,Знач Смещ);

    Рез=1;
    Попытка
    Пока ХМЛ.Прочитать() Цикл
    ТипУзла=ХМЛ.ТипУзла;
    Если (ТипУзла=ТипУзлаXML.НачалоЭлемента) Тогда
    Смещ=Смещ+" ";
    Сообщить(Смещ+"Элемент "+ХМЛ.Имя+":",СтатусСообщения.Важное);

    Пока (ХМЛ.ПрочитатьАтрибут()) Цикл
    Сообщить(Смещ+"Атрибут: "+ХМЛ.Имя+", значение: <"+ХМЛ.Значение+">");
    КонецЦикла;
    ИначеЕсли (ТипУзла=ТипУзлаXML.КонецЭлемента) Тогда
    Смещ=Лев(Смещ,СтрДлина(Смещ)-4);
    ИначеЕсли (ТипУзла=ТипУзлаXML.Текст) Тогда
    Сообщить(Смещ+"Текст элемента: <"+ХМЛ.Значение+">");
    ИначеЕсли (ТипУзла=ТипУзлаXML.СекцияCDATA) Тогда
    Сообщить(Смещ+"CDATA: <"+ХМЛ.Значение+">");
    ИначеЕсли (ТипУзла=ТипУзлаXML.Комментарий) Тогда
    Сообщить(Смещ+"Комментарий: <"+ХМЛ.Значение+">",СтатусСообщения.Информация);
    Иначе
    Сообщить(Смещ+"Элемент "+ХМЛ.Имя+":");
    Сообщить(Смещ+"Тип: "+ХМЛ.Значение);
    КонецЕсли;

    КонецЦикла;

    Исключение
    Сообщить(ОписаниеОшибки());
    Рез=0;
    КонецПопытки;

    Возврат Рез;
    КонецФункции

    &НаКлиенте
    Процедура ВыгрузитьХМЛ(ИмяФайла) Экспорт

    ХМЛ=Новый ЗаписьXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,Новый ПараметрыЗаписиXML("windows-1251",,Ложь,Ложь));
    ХМЛ.ЗаписатьОбъявлениеXML();
    ХМЛ.ЗаписатьНачалоЭлемента("Файл");
    ХМЛ.ЗаписатьАтрибут("Атрибут_Файл_1","Здесь содержимое Атрибут_Файл_1");
    ХМЛ.ЗаписатьТекст("Здесь содержимое Файл");
    ХМЛ.ЗаписатьКомментарий("Далее следует содержимое файла");
    ХМЛ.ЗаписатьНачалоЭлемента("СодержимоеФайла");
    ХМЛ.ЗаписатьАтрибут("Атрибут_СодержимоеФайла_1","Здесь содержимое Атрибут_СодержимоеФайла_1");
    ХМЛ.ЗаписатьТекст("Здесь содержимое СодержимоеФайла");
    ХМЛ.ЗаписатьСекциюCDATA("Это секция CDATA");
    ХМЛ.ЗаписатьКонецЭлемента();
    ХМЛ.ЗаписатьКонецЭлемента();

    ХМЛ.Закрыть();
    ХМЛ=Неопределено;

    ХМЛ=Новый ЧтениеXML;
    ХМЛ.ОткрытьФайл(ИмяФайла,Новый ПараметрыЧтенияXML(,,,ТипПроверкиXML.НетПроверки));
    ВывестиЭлем(ХМЛ,");
    ХМЛ.Закрыть();
    ХМЛ=Неопределено;
    КонецПроцедуры
```
---
Из справки:
Секция CDATA может находиться повсюду, где могут размещаться символьные данные. Использование секции CDATA позволяет избежать обработки блока текста, содержащего символы, которые в других случаях распознавались бы как разметка. Секция CDATA начинается со строки "<![CDATA[" и заканчивается строкой "]]>":]

Секции CDATA

[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* ']]>' Char*))
[21] CDEnd ::= ']]>'

В секции CDATA распознается только один элемент разметки - строка CDEnd. Поэтому все символы левой угловой скобки и амперсанта могут предстать здесь в своем обычном текстовом виде. Эти символы не нужно (да и невозможно) маскировать с помощью комбинаций "&--lt--;" и "&--amp--;". (добавил тире в конце, чтобы правильно отображалось, не заменялись символы)
---
По первой части вопроса XML некорректный, (3) прав.
https://www.w3.org/TR/REC-xml/#sec-cdata-sect