Комментарии 30
С ужасом вспоминаю работу с SOAP, особенно с подписанными ЭЦП го ГОСТу, это выкинутые из жизни дни
Каждый раз, редактируя очередные говнопортянки конфигурации на json/yaml, с тихой грустью вспоминаю XML. Кому он мешал?
Ахаха, это такой стокгольмский синдром? Очень рад, что XML уходит на пенсию. Он нечитаем.
Как будто json читаем...
У него спека очень простая, для передачи данных он удобен, для конфигов не очень, но для них удобнее всякие штуки типа yaml или toml, а вот xml для конфигов это худшее из того, что могло быть придумано.
По поводу удобочитаемости yaml и toml соглашусь, хотя в плане редактирования мне yaml кажется ещё хуже чем xml (ненавижу выравнивать текст пробелами с задержкой). Вот toml выглядит как идеальный формат для конфига.
А проблема xml-конфигов обычно не в xml, а в перегруженности самих конфигов. Просто с отказом от xml многие одновременно отказались от идей самоописуемости конфига, одного синтаксиса на все случаи жизни, программирования через конфигурацию и т.п.
Редактировние yaml'а — это отдельный круг ада.
У XML есть универсальная валидация схемы в большинстве редакторов, автокомплит, XSLT, семантика.
У yaml есть… читабельность и mustache/jinja-шаблоны?
У json и того нет.
С 2018 пытаемся прикрутить JSON и пришли к выводу что:
— XML остается для сложных структур данных, где требуются ссылки и сложная типизация.
— JSON используется для интеграций через OpenAPI (swagger) с упрощенной структурой.
Резюме: для интеграции сложных структур данных у XML пока нет равноценной замены.
Как-то вы полностью пропустили пространства имён, а ведь именно с ними обычно и бывают проблемы. Сейчас в век веб-приложений сложно уже найти программиста, который не отличит элемент от атрибута, а вот с пространствами имён многие продолжают путаться...
Вот в этих двух документах тэги <b>
имеют разные имена, хотя и кажутся одинаковыми:
<a xmlns="foo">
<b>Hello, world!</b>
</a>
<a xmlns="bar">
<b>Hello, world!</b>
</a>
Это не компьютер/компилятор/язык/библиотека/что-то ещё "дурит", это на самом деле разные имена!
А вот в этих документах тэги <x:b>
и <y:b>
имеют одно и то же имя, несмотря на видимую разницу:
<x:a xmlns:x="foo">
<x:b>Hello, world!</x:b>
</x:a>
<y:a xmlns:y="foo">
<y:b>Hello, world!</y:b>
</y:a>
И вообще, для большинства (но не всех) применений эти два документа полностью эквивалентны.
Да, ещё немного заблуждений о XML.
Вот прямо сегодня наткнулся на ru.SO на программиста, который считал что в вот таком документе
<foo>
<bar>Hello, <b>world</b>!</bar>
</foo>
значением элемента <bar>
является Hello, <b>world</b>!
А это не так, это не значение, а внутренняя разметка. Которую к тому же нельзя так просто вырезать из документа в виде строки из-за пространств имён...
На какой вопрос?
Лучше было сразу сам вопрос задавать, и не в личку, а здесь.
Точно не помню, но вроде бы значением элемента bar формально является конкатенация значений текстовых нод в поддереве — то есть Hello, world!
без разметки. Но на практике проще считать, что у элементов со смешанным содержимым (mixed content) вовсе нет никакого значения: при работе с ними в абсолютном большинстве случаев надо работать с DOM, а не со значением.
1. А где указание того, что кавычки могут быть не только двойными, но и одиночными?
2. Какие символы допустимы в атрибутах (в зависимости от кавычек), что делать, если нельзя, но очень хочется?
3. Какие символы допустимы в тегах?
4. Что такое пространства имён? (xmlns)
5. Кто такие entities? Привет  &"<>&amp;
и ещё много-много-много интересного.
Буквально сегодня РКН прислала запрос "Предоставление маршрутной информации операторами связи" хотя мы обычный кровавый ентерпрайз.
Так вот информацию нужно предоставить в формате XML o_O
Таким образом Ваша статья пришлась весьма кстати.
Спасибо!
Что такое XML