Как стать автором
Обновить

Комментарии 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 и того нет.

вы так говорите, как будто xml или json должно быть удобно читать глазами человека.
В банковской индустрии США стандартом является MISMO — xsd на 700+ нод для всех сценариев использования.
С 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>

И вообще, для большинства (но не всех) применений эти два документа полностью эквивалентны.

Ну да, я все же больше для тех, кто в API с XML столкнется, объяснила :)
Хотяяяя, да, и в SOAP Ui я помню с этими именами проблемы были

Как будто в API пространства имён не используются...

Вы точно прочитали мой комментарий целиком?)

Да, ещё немного заблуждений о XML.


Вот прямо сегодня наткнулся на ru.SO на программиста, который считал что в вот таком документе


<foo>
    <bar>Hello, <b>world</b>!</bar>
</foo>

значением элемента <bar> является Hello, <b>world</b>!


А это не так, это не значение, а внутренняя разметка. Которую к тому же нельзя так просто вырезать из документа в виде строки из-за пространств имён...

Спасибо!)
Для тех, кто не очень знаком с XML, можно дать правильный ответ на этот вопрос?

На какой вопрос?

Лучше было сразу сам вопрос задавать, и не в личку, а здесь.


Точно не помню, но вроде бы значением элемента bar формально является конкатенация значений текстовых нод в поддереве — то есть Hello, world! без разметки. Но на практике проще считать, что у элементов со смешанным содержимым (mixed content) вовсе нет никакого значения: при работе с ними в абсолютном большинстве случаев надо работать с DOM, а не со значением.

0. А сейчас точно 2020 год?
1. А где указание того, что кавычки могут быть не только двойными, но и одиночными?
2. Какие символы допустимы в атрибутах (в зависимости от кавычек), что делать, если нельзя, но очень хочется?
3. Какие символы допустимы в тегах?
4. Что такое пространства имён? (xmlns)
5. Кто такие entities? Привет &#160;&amp;&quot;&lt;&gt;&amp;amp;
и ещё много-много-много интересного.
Там в блоке «см также» есть ссылка на книгу по XML. У меня не было цели переписать в одну статью всю книгу, была цель познакомить с форматом новичка, который XML в глаза не видел. А дальше уже да, гуглеж, книги итд
Новичка знакомить с ХМЛ в 2020ом лучше не надо, что бы не портить психику)
Тем не менее он до сих пор жив)
Molechka, а про XSLT напишете? Можно например сделать красивую карту сайта и для SEO и для пользователя. Или такой-же красивый RSS.

Пока не планирую :)

Буквально сегодня РКН прислала запрос "Предоставление маршрутной информации операторами связи" хотя мы обычный кровавый ентерпрайз.
Так вот информацию нужно предоставить в формате XML o_O
Таким образом Ваша статья пришлась весьма кстати.
Спасибо!

Не за что! :)
Тоже поблагодарю за статью, пишите ещё.
Кстати, она юбилейная, круглая в какой-то мере — её порядковый номер — 524288 — это же 2 в девятнадцатой степени.
Спасибо)) Да, крутое число получилось))
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории