За что я ненавижу XML

Наконец-то я смог сформулировать, за что я ненавижу XML. В применении к книгам, очевидно - прочие использования этого незаконнорождённого отпрыска пьяной макаки и запаршивевшего верблюда меня волнуют мало, хотя встречаться с конфигами, где ради одного значения надо написать четыре вложенных тега по полсотни символов тоже удовольствия мало. Да и типичный вебсайт по сути своей от книги мало отличается, а чисто флэшевые поделки лично мне не интересны.
Так вот.
Книга - это текст.
Текст в книге главное.
Есть ещё всякие рющечки, шрифты и прочие выделения, ссылки, сноски, заголовки и прочее. Я прекрасно это всё знаю, ценю и использую. Но всё-таки текст важнее разметки. Если испортится разметка - книга остаётся всё той же книгой, её можно будет читать, пусть чуть менее удобнее. Мысль автора не исказится. Если же испорчен текст ценой сохранения правильности разметки - книга испорчена.
Ещё раз. Книга это текст c разметкой, причём текст первичен. Кажется, простая и очевидная мысль. Но не для всех. Во всяком случае не для придумщиков XML, чтоб им побыстрее переродиться престарелыми червями.
В XML считается, что главное - разметка. Если среди мегабайта текста попадётся отдельно стоящий &, или там <, любой парсер сочтёт это куском тэга. Хотя на тэг это ни разу не похоже. И текст будет испорчен.
Это абсолютно бредовый подход. За разметку можно принимать только то, что точно разметка. Встретили <p> - ну ладно, сочтём за тэг. Хотя сама по себе идея метить метаинформацию распространённым символами, да ещё и несколькими, запрещая их использовать Тексту, достойна пожизненной кастрации.

Комментарии

ларин, вы меня сразили. прочитала. поняла, что ничего не поняла. нашла пару знакомых слов: ненавижу, текст, книга. пойду в петлю )))

elena-hannover написал:
ларин, вы меня сразили. прочитала. поняла, что ничего не поняла. нашла пару знакомых слов: ненавижу, текст, книга. пойду в петлю )))

Не надо в петлю.
Помимо гадкого XML в мире есть масса приятных вещей.

Конечно. Гадкий SGML, например :) По поводу subj - кроме DOMовских парсеров, которые, действительно, пытаются засосать весь текст одним куском и умирают при нарушении структуры, есть еще и SAX2-парсеры. Они позволяют определить пользовательские callback'и при некоторых распространенных ошибках (непарный тег, например). Как бонус- менее ресурсоемки. Как штраф - внутренней организацией разобранного текста приходится заниматься самому.

Ulenspiegel написал:
Конечно. Гадкий SGML, например :) По поводу subj - кроме DOMовских парсеров, которые, действительно, пытаются засосать весь текст одним куском и умирают при нарушении структуры, есть еще и SAX2-парсеры. Они позволяют определить пользовательские callback'и при некоторых распространенных ошибках (непарный тег, например). Как бонус- менее ресурсоемки. Как штраф - внутренней организацией разобранного текста приходится заниматься самому.

Это счастье можно прикрутить к пыху, и если да - то как?
Я бы парсер переписал.

Простым образом - нет. Поскольку PHP - интерпретатор, и передать в .so-шку адрес-функции-которую-надо-позвать - проблематично. Есть метода написания на C/C++ расширений для PHP, которая гарантированно позволяет манипулировать переменными, определенными внутри PHP. Позволяет ли она позвать PHP-процедуру - ответить не готов. Если описать требования к такому расширению (например, на входе - имя XML-файла, реакция на незакрытый тег выбирается по содержимому переменной UnclosedTag_Bold, результаты парсинга выводятся в file stream) - готов заняться, но не с очень высоким быстродействием :(

Ulenspiegel написал:
Если описать требования к такому расширению (например, на входе - имя XML-файла, реакция на незакрытый тег выбирается по содержимому переменной UnclosedTag_Bold, результаты парсинга выводятся в file stream) - готов заняться, но не с очень высоким быстродействием :(

С той же оговоркой готов присоединиться.

ЗЫ: По тем же причинам не люблю fb2 (как разновидность xml).
Source в LaTeX с последующей генераций pdf (размер шрифта по вкусу) рулит (для просмотра можно генерить html)! :)

larin написал:
Ulenspiegel написал:
Конечно. Гадкий SGML, например :) По поводу subj - кроме DOMовских парсеров, которые, действительно, пытаются засосать весь текст одним куском и умирают при нарушении структуры, есть еще и SAX2-парсеры. Они позволяют определить пользовательские callback'и при некоторых распространенных ошибках (непарный тег, например). Как бонус- менее ресурсоемки. Как штраф - внутренней организацией разобранного текста приходится заниматься самому.

Это счастье можно прикрутить к пыху, и если да - то как?
Я бы парсер переписал.


В parser.inc разве не SAX?

Малолетний Д. написал:

В parser.inc разве не SAX?

Х.З. Либо не видел, либо не помню. Ссылка есть ?

Ulenspiegel написал:
Малолетний Д. написал:

В parser.inc разве не SAX?

Х.З. Либо не видел, либо не помню. Ссылка есть ?

http://github.com/larin/librusec/blob/master/parser.inc

Угу. Он самый. Хорошая новость - адреса PHP-callback'ов передавать в расширение можно. Плохая - в используемом расширении (обертка expat для PHP, James'а Clark) callback'ов для обработчиков ошибок не обнаружено.
Утверждается, что в 5м PHP встроено расширение для работы с XML, написанное именно вокруг libxml2, с дивной производительностью/надежностью. Проверить сейчас не могу, при хорошем раскладе - завтра утром. Если руки у кого доберутся раньше - отпишитесь, плиз.

2Larin:
1) на сервере какая версия PHP ?
2) кроме плохого самочуствия при невалидном документе, какие ещё недостатки у парсера ?

Ulenspiegel написал:
1) на сервере какая версия PHP ?
2) кроме плохого самочуствия при невалидном документе, какие ещё недостатки у парсера ?

1. 5.2.11
2. Это главное.

Понял. Ссылку на невалидный документ, на котором падает, можно попросить ?

А если собственно текст положить в
<![CDATA[...]]>
будет все спец. символы игнорировать с остальным согласен.

Иногда думается, что... помимо гадкого XML в мире есть масса ещё более гадких вещей.

МОТОРОЛЛЕР НЕ МОЙ! Я ПРОСТО РАЗМЕСТИЛ ОБЪЯВУ!

Иногда думается, что... помимо гадкого XML в мире есть масса ещё более гадких вещей.

МОТОРОЛЛЕР НЕ МОЙ! Я ПРОСТО РАЗМЕСТИЛ ОБЪЯВУ!

А редактор fb2 из текста пустые строки убирает!
Когда автор разделяет эпизоды пустой строкой, то в скачанной книге, если заливший не додумался вручную пустые строки после конвертации восстановить, начинаешь мучительно соображать, где действие происходит или чья реплика звучит. :(

polarman написал:
А редактор fb2 из текста пустые строки убирает!
Когда автор разделяет эпизоды пустой строкой, то в скачанной книге, если заливший не додумался вручную пустые строки после конвертации восстановить, начинаешь мучительно соображать, где действие происходит или чья реплика звучит. :(

Потому как с точки зрения XML пустые строки и пробелы - это тоже его внутренние служебные символы, а не часть Текста. А это для него важнее.

Так что, нужна отдельная кодировка? Я не программёр, с XML знакомился "в плане общего развития", но, как я понимаю, создать дополнительный набор символов не такая уж большая проблема - не было в изначальной винде русской кодировки, теперь есть. А в ранешние времена, помнится, русификаторы писались... может и здесь некое подобие "русификатора" надо?
Или сама концепция разметки длинной цепочкой вложенных тэгов не меньше раздражает? Тогда, наверное, вопрос к лингвистам, к тем, кто структурами языков занимается...
В таком разрезе проблема-то получается значительно шире, нежели использование XML при создании fb2... ИМХО.
Все это, конечно, рассуждения дилетанта... :)

polarman написал:
Так что, нужна отдельная кодировка? Я не программёр, с XML знакомился "в плане общего развития", но, как я понимаю, создать дополнительный набор символов не такая уж большая проблема - не было в изначальной винде русской кодировки, теперь есть. А в ранешние времена, помнится, русификаторы писались... может и здесь некое подобие "русификатора" надо?
Или сама концепция разметки длинной цепочкой вложенных тэгов не меньше раздражает? Тогда, наверное, вопрос к лингвистам, к тем, кто структурами языков занимается...
В таком разрезе проблема-то получается значительно шире, нежели использование XML при создании fb2... ИМХО.
Все это, конечно, рассуждения дилетанта... :)

Нужно думать головой при создании стандартов. К сожалению, в компьютерной индустрии это не принято.
Я, к примеру, не могу понять, почему у обычного ПК вместо двух видов подключения прочих устройств, проводного с питанием и беспроводного, грубо говоря USB и WIFI, используется больше десятка - PS2, LPT, COM, USB, FireWare, VGA, DVI, WIFI, BlueTooth, infrared, ... - да что там, каждый может пересчитать самостоятельно. И все убогие.

Казалось бы, возьми ты в качестве спецсимвола нечто, что в человеческих текстах не встречается, или встречается крайне редко. Да хоть [[, или там {[{, если не хватает мозгов на какой-нибудь спецсимвол.
Нет, надо забанить несколько нужных знаков. А потом доблестно их эскейпить туда-сюда.

Цитата:
Нужно думать головой при создании стандартов. К сожалению, в компьютерной индустрии это не принято.
Я, к примеру, не могу понять, почему у обычного ПК вместо двух видов подключения прочих устройств, проводного с питанием и беспроводного, грубо говоря USB и WIFI, используется больше десятка

Так все просто же. ровным счетом потому же почему человечество использует все эти пароходы и самолеты и поезда и даже автомобили вместо удобной и простой телепортации. Как, что вы говорите? телепортацию не изобрели еше, да точно...
ну так не поленитесь разложить по шкале времени все эти шины и интерфейсы доступа, чтоб убедится, что появлялись они последовательно и постепенно вытесняя предыдущие формы. Скажем счас комп с ком-портом сильно поискать, то же касается VGA разьемов на видеокарте итд.

BRMAIL написал:
Цитата:
Нужно думать головой при создании стандартов. К сожалению, в компьютерной индустрии это не принято.
Я, к примеру, не могу понять, почему у обычного ПК вместо двух видов подключения прочих устройств, проводного с питанием и беспроводного, грубо говоря USB и WIFI, используется больше десятка

Так все просто же. ровным счетом потому же почему человечество использует все эти пароходы и самолеты и поезда и даже автомобили вместо удобной и простой телепортации. Как, что вы говорите? телепортацию не изобрели еше, да точно...
ну так не поленитесь разложить по шкале времени все эти шины и интерфейсы доступа, чтоб убедится, что появлялись они последовательно и постепенно вытесняя предыдущие формы. Скажем счас комп с ком-портом сильно поискать, то же касается VGA разьемов на видеокарте итд.

Какая шкала времени, ты о чём?
Специально залез под стол посчитать.
На обычном десктопе, с которого я сейчас пишу, на задней стенке 15 разъёмов. Из них 6 USB, взамозаменяемых, все остальные разные. Каждое устройство можно пихнуть только в специальный разъём. Это только проводных, с беспроводными тот же бардак. Да и внутри ещё шесть, SATA+ATA+floppy, три пары разных разъёмов для одной и той же функции.
А должно быть несколько одинаковых, с парой медных контактов для питания + оптика для данных, в один из которых воткнут монитор, и на мониторе ещё несколько таких же, куда вотнута всякая периферия, которая ближе к монитору, чем к CPU. И это не телепортация, это всё уже давно изобретено и работает. Ещё c прошолого тысячелетия.
Пароход, самолёт и автомобиль выполняют разные функции и не взамозаменяемые.
А PS2, ATA, SATA, FireWare, USB и т.п - одну и ту же.

я не знаю что у вас стоит под столом и какие разьемы сзади на корпусе компьютера, но могу предположить что там принтерный порт, пару СОМ портов, порт PS2 для мыши и клавы, возможно еше fireware и esta
А теперь проделайте домашнюю работу - пойдите на гугл, и убедитесь, что компорт и lpt порт появились задолго до usb , то же самое касается и PS2 для мыши и клавы - не было еше ЮСБ в те времена когда появился этот стандарт. И теперь пока он окончательно не вымрет сам по себе - его будут продолжать ставить на матери, чтоб не потерять покупателей которые взяли бы такой продукт будь у него этот разьем.
Та же картина с IDE /SATA - ничего такого что было бы револьюционно новым и приятным для пользователя (обычного пользователя лаптопа или десктопа) в новом SATA нету. Однако у меня в сервере счас 6 винтов по 250 гиг IDE. Ну какой смысл их выбрасывать если они вполне себе работают и не думают даже ломаться, а половина из них еще на гарантии (были времена с 5-ти летней гарантией) поэтому два года назад пересобирая сервер я взял в него мать которая умеет оба.
Так что пока телепорт не изобрели - будете ездить на параходах и автомащинах. А когда изобретут - будете продолжать ездить на них, пока телепорт не вытеснит эти пережитки прошлого

В современных материнках уже практически не бывает LPT. А жаль.

polarman написал:
А редактор fb2 из текста пустые строки убирает!
Когда автор разделяет эпизоды пустой строкой, то в скачанной книге, если заливший не додумался вручную пустые строки после конвертации восстановить, начинаешь мучительно соображать, где действие происходит или чья реплика звучит. :(

Не совсем так. Убираются только группы из пустых строк, если была одна пустая строка, то она так и останется, а вот если было 2 или более пустых строк, то FBE после скрипта "Генеральная уборка" оставит только 1 пустую строку.
IMHO, совершенно правильно, не к чему плодить много лишних <empty-line/>
на понимание текста не повлияет, одна там пустая строка или две, лишь бы была.

Как уже отмечал - профан есмь! Однако отсканил и вычитал книгу с единичными пустыми строками меж эпизодами, попросил сконвертить - эпизоды слиплись... :( исправляли, как я понял, вручную.

polarman написал:
Как уже отмечал - профан есмь! Однако отсканил и вычитал книгу с единичными пустыми строками меж эпизодами, попросил сконвертить - эпизоды слиплись... :( исправляли, как я понял, вручную.

ну дык... то ведь конвертер
виноват, а я-то про редактор.
FBE не конвертит, а редактирует.
Если в редакторе конвертили, то может это был БукДизайнер или ФикшенБукДизайнер но не ФикшенБукЭдитор.

Zadd > FBE не конвертит, а редактирует.
"А вот тут-то мы вас и попгавим!" (L) :)
FBE2 принимает копипаст (по крайней мере, из браузеров и WordViewer'а) с сохранением жирностей/курсивностей. Очень удобно, сам только таким способом и конвертирую. Правда, пустые строки тоже теряет - приходится дорабатывать руками. :(

Zadd написал:
IMHO, совершенно правильно, не к чему плодить много лишних <empty-line/>
на понимание текста не повлияет, одна там пустая строка или две, лишь бы была.

IMHO, заменить привычный, общеупотребительный двухбуквенный тег BR на десятибуквенный empty-line с ровно тем же функционалом, бессмысленно и беспощадно ухудшив тем совместимость с html, мог только психически альтернативный разработчик.

larin написал:
заменить привычный, общеупотребительный двухбуквенный тег BR на десятибуквенный empty-line с ровно тем же функционалом, бессмысленно и беспощадно ухудшив тем совместимость с html,
А при чём тут совместимость? BR несовместим с XML уже тем, что не является самозакрывающим, т.е. что его "совместимость" с "empty-line/", что с "br/" - однофигственно. Зато, что важно для тех, кто html'а не знает, empty-line, strong, emphasis, subtitle и т.д. хорошо читаются глазами (т.е. в качестве форматтера может выступать собственное воображение :) ) - я, например, первые три дня читал fb2-книги именно так... :)

ога! вот оно как! (*радостно прыгает на одной ноге)
не одного меня тошнит от xml.
какой хороший стимул возобновить занятия с форматом nfb.
(*ушел обдумывать план конвертации всех книг в простой текстовый формат)

СерыйМыш написал:
хороший стимул возобновить занятия с форматом nfb.
+65537! (факториал то бишь) :)

Вначале было Слово. И Слово было - 2 байта...
И это нам аукается аномально долго.

oldvagrant написал:
Вначале было Слово. И Слово было - 2 байта...
И это нам аукается аномально долго.

Вообще-то слово было 4 байта, а 2 байта называлось halfword т.е. полуслово. Потом пришла эра персональных компьютеров, сначала 8-битных(у них слово было байтом 8 бит), потом персоналки c 16-битным словом(2 байта), потом стали понимать 32-разрядные(4 байта), а потом 64-разрядные (8 байтов), но что сейчас называется словом, не в курсе, наверно, так и осталось 2 байта, чтобы сохранить совместимость со старыми программами(проще ввести новые термины DWORD, QWORD и т.д., чем менять ассемблер)

в начале байтом называлась группа бит от 5 до 9, у Кнута виртуальная машина с байтом в 6 бит.
16-битные машины появились до персоналок - PDP-11 (она же СМ-4), например. И именно на них и появилось слово = 16 бит.

mihsan написал:
в начале байтом называлась группа бит от 5 до 9, у Кнута виртуальная машина с байтом в 6 бит.
16-битные машины появились до персоналок - PDP-11 (она же СМ-4), например. И именно на них и появилось слово = 16 бит.

про процессоры с не 8битным байтом знаю, также еще был процессор CYBER, у которого байт=слово=60 бит.
Кроме того, есть еще НЕбитовые процессоры, у которых 1разряд не двоичный, а троичный (принимает 3 значения: -1/0/1, очень удобно для параллельных вычислений на суперкомпьютерах(не в курсе, чем именно это удобнее, но читал, что для параллельных вычислений на многопроцессорных суперкомпьютерах это удобнее, чем двоичный бит))
А слово из 4 байт применялось на компьютерах IBM, с которых у нас скоммуниздили серию компьютеров ЕС.

кстати, о птицах. есть интересная метОда, применяемая, злобными монстрами из фирмы микрософт - класть текст отдельно, а разметку и форматирование - отдельно, пусть даже в тот же файл (doc старых версий так устроен). есть некоторые грабли в случае, если текст кто-то поменяет ручками, а блок форматирования не синхронизирует - фактически вся разметка/форматирование идёт по бороде. но при наличии правильных и удобных инструментов возможно обеспечить некоторую гарантию целостности.
проблема тут собственно не в xml. она в другом. сохранится ли ценность текста, если будет утрачена его разметка? не разбивка на абзацы, а именно разметка - где заголовок, где эпиграф, где стихи. опять же, если внедренные иллюстрации потеряются или просто окажутся не на своих местах, то тоже будет мало приятного.
как ни крути, всё сводится к наличию (а точнее отсутствию) правильного инструментария. как только будет сделан стабильный и работоспособный редактор с набором конвертеров - всё распрямится само собой. можно даже оставить в основе это убожество (xml, имел я его ввиду), при условии, что редактор(ы) позволит гарантированно избежать косяков с псевдотегами и нарушением разбивки/форматирования текста.
но всё равно, специализированный формат против универсального однозначно выигрывает.

СерыйМыш написал:
кстати, о птицах. есть интересная метОда, применяемая, злобными монстрами из фирмы микрософт - класть текст отдельно, а разметку и форматирование - отдельно, пусть даже в тот же файл.

Не, такой бред как бинарные форматы, которые без спец утилиты ни посмотреть, ни поправить, мы не рассматриваем в принципе. Во времена XT может выгода от прямой загрузки структур в память может и была, хотя не уверен что заметная. С тех пор процессоры стали быстрее в тысячи раз и распарсить любой разумный формат проблем не представляет никаких.

Илья, это подсознание бунтует. :)
Ларин ненавидит xml, xml=fb2, fb2=Грибов, Грибов - копираст, ненавидит Либрусек и Ларина.
Ларин ненавидит xml... :)

skiv написал:
Илья, это подсознание бунтует. :)
Ларин ненавидит xml, xml=fb2, fb2=Грибов, Грибов - копираст, ненавидит Либрусек и Ларина.
Ларин ненавидит xml... :)

Ларин сомневается в xml уже третий год - http://rusec.livejournal.com/11740.html
Грибов тогда про Либрусек и не знал, какая уж там ненависть.
Да и не он XML придумывал, он портил с уже готовой базы.

Портил - это метко сказано.

Бедный Грибов, как его, простите "обосрали", и кто вечно молчащий Ларин... это война ! :)

Lord KiRon написал:
Бедный Грибов, как его, простите "обосрали", и кто вечно молчащий Ларин... это война ! :)

Грибов создал хоть какой-то стандарт.
Остальные не сделали вообще ничего. В том числе я.
У меня были разработки для личного пользования, но мне даже в голову не пришло довести их до публичного релиза.
А жаль. Оно было заметно удобнее.
Но винить-то некого, ССЗБ.

larin написал:
У меня были разработки для личного пользования, но мне даже в голову не пришло довести их до публичного релиза. А жаль. Оно было заметно удобнее.

А что, поезд ушел?
PS Я не даром спрашиваю - у меня сканы трех книг на вычитке, не все ж за меня конвертить будут?

larin написал:
[
У меня были разработки для личного пользования, но мне даже в голову не пришло довести их до публичного релиза.
А жаль. Оно было заметно удобнее.
Но винить-то некого, ССЗБ.

в студию, если сохранилось. или хотя бы тезисы. буратин тут много, мне как минимум человек пять попадалось. и каждый сам по себе. может надо просто объединить усилия? глядишь, коллективный разум сможет родить нормальный жизнеспособный формат.

...нормальный жизнеспособный формат.

Вот объясните мне, пожалуйста, чем плох ХТМЛ как формат для электронных книг?

thirteen написал:
...нормальный жизнеспособный формат.
Вот объясните мне, пожалуйста, чем плох ХТМЛ как формат для электронных книг?

Я этот вопрос второй год задаю. Ответ и ныне там.

pkn написал:
thirteen написал:
...нормальный жизнеспособный формат.
Вот объясните мне, пожалуйста, чем плох ХТМЛ как формат для электронных книг?

Я этот вопрос второй год задаю. Ответ и ныне там.

Самостоятельно подумать конечно лен. Диалектика вышла из моды...

Например:
Вас не затруднит привести цитатку из спецификации формата HTML, в которой раскрыта тема классического книжного отображения сносок.

Anarchist написал:

Вас не затруднит привести цитатку из спецификации формата HTML, в которой раскрыта тема классического книжного отображения сносок.

После Вас: приведите такую цитатку из спецификации формата XML.

Anarchist написал:

Самостоятельно подумать конечно лен.

Нахуй иди, думатель.

Страницы

X