За мою ДОЛГУЮ практику обработки документов я видел МНОГО людей которые приходили примерно с одним и тем же вопросом - "а вы можете вылить нам документы без потери качества и информации в XML?"
И ответ был - "да конечно можем. Вам всё равно в какой именно XML? Конкретная схема и DTD вас не волнуют?".
Люди обычно УДИВЛЯЛИСЬ и говорили - "да конечно - НЕ ВОЛНУЕТ, ведь XML - МОЖЕТ ВСЁ". (Иногда - спрашивали - "а что такое DTD").
Людям выдавали комплект XML "на пробу".
Некоторые - просто уходили.
Некоторые приходили и говорили - "ну это не то, что мы имели в виду".
Дальше начинались расспросы. Оказывалось, что люди НА САМОМ деле имели в виду КОНКРЕТНУЮ "реализацию" XML - конкретную схему или DTD (ну я - по-дилетантски объясняюсь). То ли это XMLDoc, то ли DocXML, то ли OpenDoc, то ли DocOpen.
И тут - ВСЁ ВСТАВАЛО на свои места! XML - это конечно КРУТО и ГИБКО. И "очень на волне". Но! МНОГИЕ под термином XML ПОДРАЗУМЕВАЮТ - "конкретную схему".
И если кто-то и слышал про XSLT. То - НЕМНОГИЕ. И опять же - если кто и слышал, то "в рамках КОНКРЕТНОЙ схемы".
Это я опять же - "по-дилетантски".
Это я всё к чему? XML - это конечно "круто и гибко", ну примерно как CORBA с её "динамическим получением описания интерфейсов".
Только - "совсем гибко и совсем круто" - ДАЛЕКО не МНОГИЕ могут оценить.
Ну ПРАВДА! Что делать с ОБЪЕКТОМ, интерфейс которого "известен только динамически"? Ну КРУТО - ДА! Никто - не спорит. НО ЧТО ДЕЛАТЬ? Разве только - "скрипты писать". Это - ДА. Это - можно.
И к чему я это?
Просто "серебряной пули нет".
МНОГИЕ слышали про XML. МНОГИЕ его используют. В СВОИХ нуждах.
Это - ДА - "круто и гибко".
Но ДАЛЕКО НЕ ТАК "круто и гибко" - чтобы "придти к другу" и сказать ему - "Эй Buddy - а вылей ка мне из своего проприетарного формата в XML".
Buddy - он конечно - клёвый парень - он выльет! Не вопрос!
Но ДАЛЕКО НЕ ФАКТ, что он выльет РОВНО ТО, что вы хотели.
Нет "серебряной пули". XML - "на вершине айсберга" - это не более чем - "набор стандартизированных скобочек".
Надеюсь, что я не утомил вас своим занудством...
P.S. я - дилетант в XML, но я, к сожалению, ПРОФЕССИОНАЛОВ ВЫСОКОГО РАНГА - и не встречал. Наверное - не повезло...
P.P.S. просто ещё я встречал такие вопросы - "зачем хранить данные в проприетарном формате, когда можно хранить в XML". Так и хочется спросить в обратную сторону - "А ЗАЧЕМ?". Чтобы данные выросли в 1.5-2 или даже ТРИ раза? СТО Гигабайт давайте умножим на 1.5. Что получим? То же относится и к вопросу - "а почему бы ТОТАЛЬНО не перейти на UNICODE?" Тоже хочется спросить - "а ЗАЧЕМ?" Чтобы данные выросли в ДВА РАЗА? ПРОСТО так... Ну или в 1.5 в случае с UTF-8. ЗАЧЕМ? Ради мнимой "крутости и гибкости"? А почему не пойти другим путём? Не хранить UNICODE только там где он РЕАЛЬНО НУЖЕН? Ведь - ЭТО ПРОСТО.
Простите за моё занудство... Лет через 5 - оно реально только ЗАНУДСТВОМ и покажется. Ведь - мощности и хранилищ и интернета - только растут...
И ответ был - "да конечно можем. Вам всё равно в какой именно XML? Конкретная схема и DTD вас не волнуют?".
Люди обычно УДИВЛЯЛИСЬ и говорили - "да конечно - НЕ ВОЛНУЕТ, ведь XML - МОЖЕТ ВСЁ". (Иногда - спрашивали - "а что такое DTD").
Людям выдавали комплект XML "на пробу".
Некоторые - просто уходили.
Некоторые приходили и говорили - "ну это не то, что мы имели в виду".
Дальше начинались расспросы. Оказывалось, что люди НА САМОМ деле имели в виду КОНКРЕТНУЮ "реализацию" XML - конкретную схему или DTD (ну я - по-дилетантски объясняюсь). То ли это XMLDoc, то ли DocXML, то ли OpenDoc, то ли DocOpen.
И тут - ВСЁ ВСТАВАЛО на свои места! XML - это конечно КРУТО и ГИБКО. И "очень на волне". Но! МНОГИЕ под термином XML ПОДРАЗУМЕВАЮТ - "конкретную схему".
И если кто-то и слышал про XSLT. То - НЕМНОГИЕ. И опять же - если кто и слышал, то "в рамках КОНКРЕТНОЙ схемы".
Это я опять же - "по-дилетантски".
Это я всё к чему? XML - это конечно "круто и гибко", ну примерно как CORBA с её "динамическим получением описания интерфейсов".
Только - "совсем гибко и совсем круто" - ДАЛЕКО не МНОГИЕ могут оценить.
Ну ПРАВДА! Что делать с ОБЪЕКТОМ, интерфейс которого "известен только динамически"? Ну КРУТО - ДА! Никто - не спорит. НО ЧТО ДЕЛАТЬ? Разве только - "скрипты писать". Это - ДА. Это - можно.
И к чему я это?
Просто "серебряной пули нет".
МНОГИЕ слышали про XML. МНОГИЕ его используют. В СВОИХ нуждах.
Это - ДА - "круто и гибко".
Но ДАЛЕКО НЕ ТАК "круто и гибко" - чтобы "придти к другу" и сказать ему - "Эй Buddy - а вылей ка мне из своего проприетарного формата в XML".
Buddy - он конечно - клёвый парень - он выльет! Не вопрос!
Но ДАЛЕКО НЕ ФАКТ, что он выльет РОВНО ТО, что вы хотели.
Нет "серебряной пули". XML - "на вершине айсберга" - это не более чем - "набор стандартизированных скобочек".
Надеюсь, что я не утомил вас своим занудством...
P.S. я - дилетант в XML, но я, к сожалению, ПРОФЕССИОНАЛОВ ВЫСОКОГО РАНГА - и не встречал. Наверное - не повезло...
P.P.S. просто ещё я встречал такие вопросы - "зачем хранить данные в проприетарном формате, когда можно хранить в XML". Так и хочется спросить в обратную сторону - "А ЗАЧЕМ?". Чтобы данные выросли в 1.5-2 или даже ТРИ раза? СТО Гигабайт давайте умножим на 1.5. Что получим? То же относится и к вопросу - "а почему бы ТОТАЛЬНО не перейти на UNICODE?" Тоже хочется спросить - "а ЗАЧЕМ?" Чтобы данные выросли в ДВА РАЗА? ПРОСТО так... Ну или в 1.5 в случае с UTF-8. ЗАЧЕМ? Ради мнимой "крутости и гибкости"? А почему не пойти другим путём? Не хранить UNICODE только там где он РЕАЛЬНО НУЖЕН? Ведь - ЭТО ПРОСТО.
Простите за моё занудство... Лет через 5 - оно реально только ЗАНУДСТВОМ и покажется. Ведь - мощности и хранилищ и интернета - только растут...
1. Профессионалы в работе с XML есть, но они ужасны :) Нет, правда, разобраться что делается в XSLT размером в мегабайт становится уже проблематично. Я видел как с помощью него генерируются HTML-страницы. Для мобильной версии одни преобразования, для обычной - другие, для печатной - третьи. На мой взгляд успешное применение - API. Вам вернули какой-то ответ, можете прогонять через XSLT, парсить SAX/DOM... Но мне больше нравится JSON - он короче и нагляднее.
ОтветитьУдалить2. Наверно, Вы имели ввиду не "проприетарном", а "бинарном" формате? Хранение данных с каждым годом дешевеет. Если плюсы обработки перевешивают цену хранения, то почему бы и не XML? Реляционные БД не совсем подойдут, JSON/YAML - тоже не то, единственно что-нибудь типа Cache или couchDB, но и то местами придётся извращаться.
3. По поводу UNICODE - здесь Вы не правы. Дайте догадаюсь, Вы работаете только с Windows? И не напрягает метаться между CP-866, WIN-1251 и UNICODE? Должен остаться только один! :) В мире *nix UNICODE - стандарт! В Python3 всё юникодное, в Ruby изначально так и было, даже Microsoft переходит на него. А почему? Потому что запарил этот ад с кодировками! Пришла строка с внешнего сервиса и чего с ней делать? Как пользователю показать? Попробуйте пописать на PyQt под винду или обработать odt(кстати, XML :) ) php-скриптом - почувствуете все тонкости :)
Прошу прощения за столь подробный комментарий, но меня уж больно задело :)
2. Сказал что хотел сказать. "Проприетаром". Ну и "бинарном". Да. "Хранение данных с каждым годом дешевеет." :-) Пока есть "десктопные" пользователи - это - не аргумент.
Удалить3. Не только Windows. "Попробуйте пописать на PyQt под винду или обработать odt" ;-) Кто я по вашему такой, чтобы бросаться и пробовать? :-) "Пришла строка с внешнего сервиса и чего с ней делать?" - а вот тут вы путаете "тёплое с мягким" :-) "внешний сервис" и "хранение" - "две большие разницы".
2. Что-то не понял про десктопных пользователей, можете пояснить?
Удалить3. "Кто я по вашему такой, чтобы бросаться и пробовать?" - вот видите, Вы никогда не сталкивались с этой проблемой, а судя по цитате, и не сталкнётесь. WINDOWS-1251 Вам хватает с головой. "Внешний сервис" и "хранение" может быть одним и тем же. Как пример - MySQL: хранит? а то! внешний сервис? ага! А уж сколько её движки кодировок поддерживают :)
"вот видите, Вы никогда не сталкивались с этой проблемой, а судя по цитате, и не сталкнётесь. WINDOWS-1251 Вам хватает с головой."
УдалитьПоспешный вывод. Ага. Я вообще-то в основном обработкой текстов занимаюсь :-)
" Как пример - MySQL: хранит? а то! внешний сервис? ага! А уж сколько её движки кодировок поддерживают :)"
УдалитьИ что вы этим хотели сказать?
"Что-то не понял про десктопных пользователей, можете пояснить?"
УдалитьУвеличение объёма данных - их отнюдь не порадует.
А какой именно обработкой текстов Вы занимаетесь? Вернее, со сколькими кодировками работаете?
ОтветитьУдалитьПро MySQL я хотел сказать, что "внешний сервис" и "хранение" - очень часто одна и та же штука.
Да какая им разница?! Цены на винты стабильно уменьшаются, и хранить 10Gb или 30 разницы нет.
"Да какая им разница?! Цены на винты стабильно уменьшаются, и хранить 10Gb или 30 разницы нет."
УдалитьПосмотрел бы я на это. Как вы бы это до пользователей доносили бы.
"Вернее, со сколькими кодировками работаете?"
УдалитьА какая разница? Главное, что не с одной.
"Посмотрел бы я на это. Как вы бы это до пользователей доносили бы." - да про это как-то все тихо молчат :) Вы смотрели сколько весит Win7, а chrome, а новенький фильм в BD? Место стало дешёвым, и оно хорошо масштабируется горизонтально.
УдалитьКстати, о UTF-8 - http://habrahabr.ru/post/82426/. И это статья 2010 года, советую прочитать также и коментарии.