metaclass: (Default)
[personal profile] metaclass
Нужно обмениваться данными с другой программой. Сделал для ее разработчиков документ с описанием формата на базе CSV, в котором есть такие строки:

"дата - формат dd.mm.yyyy, с выводом незначащих нулей."

"в первых трех строках последнее поле не указано, поэтому в конце строки стоит ;" (Всего полей шесть, последнее может быть пустым и чтобы парсеру не обрабатывать частные случаи - пустое последнее поле должно быть).

Присылают файл с такими строками:
"10780;11077112;31.03.2009;1.04.2009;1014"

Вопрос, что я объяснил не так?

Date: 2009-03-31 09:54 am (UTC)
From: [identity profile] potan.livejournal.com
Начинаю понимать, зачем XML придумали...

Date: 2009-03-31 10:02 am (UTC)
From: [identity profile] aamonster.livejournal.com
Это начальная стадия овладения xml.
Следующая - когда начинаете удивляться, зачем xml придумали.

Date: 2009-03-31 10:12 am (UTC)
From: [identity profile] henu3detb.livejournal.com
А что может быть лучше XML для обмена данными со _сторонними_ приложениями, написанными в другой организации другими людьми? Как раз тут веб-сервисы уместны.

Date: 2009-03-31 10:34 am (UTC)
From: [identity profile] metaclass.livejournal.com
Какой xml, какие веб-сервисы, там прога под DOS, на паскале и btrieve. :)

Date: 2009-03-31 10:54 am (UTC)
From: [identity profile] aamonster.livejournal.com
Если не нужна "читабельность" данных - вариации TLV (хотя бы Google Protocol Buffers).

Если нужна - JSON (привет веб-сервисам), YAML.

Да, кстати - названные мной форматы по большому счету изоморфны XML.

Date: 2009-03-31 10:58 am (UTC)
From: [identity profile] aamonster.livejournal.com
Ну а для конкретных случаев, когда не требуется вся гибкость xml-подобной хрени - более простые форматы.
К примеру, NMEA-0183 (GPS) - отнюдь не на основе XML, и не вижу смысла в замене его на xml-формат.

Date: 2009-03-31 11:30 am (UTC)
From: [identity profile] henu3detb.livejournal.com
Это все понятно. Я просто считаю, что заморачиваться с этими форматами имеет смысл в рамках одной организации, для ремоутинга. А для взаимодействия с хрензнаетчем и хрензнаетгде и хрензнаеткемнаписанном лучше более распространенные форматы, поддерживаемые почти всеми платформами. Но это на самом деле все неважно уже, в свете того написал metaclass.

Date: 2009-03-31 01:30 pm (UTC)
From: [identity profile] potan.livejournal.com
S-выражения.

Date: 2009-03-31 11:00 am (UTC)
From: [identity profile] potan.livejournal.com
Удивляюсь я уже давно.

Date: 2009-03-31 10:03 am (UTC)
From: [identity profile] vp.livejournal.com
ачтоэтотакое?

метакласс не написал, что "экпорт будет из НИИ", там таких слов не слышали.

Date: 2009-03-31 10:13 am (UTC)
From: [identity profile] guamoka.livejournal.com

там таких слов не слышали


обычно все гораздо хуже. у них там СВОЙ xml:)

Date: 2009-03-31 11:20 am (UTC)
From: [identity profile] sergiej.livejournal.com
А потом будет ответ как я однажды получил: "а что у вас в XML важен порядок полей?!?!?!"

Date: 2009-03-31 12:14 pm (UTC)
From: [identity profile] vp.livejournal.com
а что, важен? :)

Date: 2009-03-31 12:31 pm (UTC)
From: [identity profile] sergiej.livejournal.com
:) ну если прописано через ","
<!ELEMENT чел (возраст, рост, пол)>
если пол будет перед ростом, то файл невалидный.

Date: 2009-03-31 12:50 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Херассе забабоны.
А какой смысл могут нести такие ограничения, если при обработке все равно элементы по имени искать придется?

Date: 2009-03-31 12:53 pm (UTC)
From: [identity profile] vp.livejournal.com
+1
вообще хорошо бы увидеть пример в виде такого XML

Такой пойдёт?

Date: 2009-04-01 09:15 am (UTC)
From: [identity profile] sergiej.livejournal.com
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>title</title>
</head>
<body>
<p>page</p>
</body>
</html>

Используемый http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd предполагает head непосредственно перед body и никак иначе, даже если это кому-то не нравится.

Date: 2009-03-31 01:39 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
> при обработке все равно элементы по имени искать

Слышали, что такое DOM, SAX?

Date: 2009-03-31 02:15 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да, в DOM я такие элементы буду искать по имени. Что нибудь вроде SelectSingleNode.
В SAX сделаю три переменных и в вызове обработчика для элемента буду заполнять их, проверяя имя элемента.
И уж всяко не стану надеятся на порядок их расположения в файле - мало ли что там может быть, например комментарий кто-нибудь всунет или еще хрень какую.

Date: 2009-03-31 02:21 pm (UTC)
From: [identity profile] vp.livejournal.com
все равно не понятно каким боком может на что-то влиять мифический порядок элементов. Это ж технологии парсинга, не более того.

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-03-31 02:41 pm (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-03-31 03:05 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-03-31 03:12 pm (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-03-31 03:22 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-03-31 03:26 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2009-03-31 06:08 pm (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 09:29 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2009-04-01 10:39 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-04-01 10:48 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-04-01 11:02 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 11:03 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2009-04-01 11:16 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 11:22 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 10:53 am (UTC) - Expand

(no subject)

From: [identity profile] volodymir-k.livejournal.com - Date: 2009-04-02 09:10 pm (UTC) - Expand

Date: 2009-03-31 02:55 pm (UTC)
From: [identity profile] sergiej.livejournal.com
Хороший вопрос, наверно для порядка :)
Я тоже поначалу думал что это зря, но потом представил себе насколько проще (по загрузке машины) с такой структурой раобтать XSLT процессору. Особенно в случае если элементов с тем же самым названием может быть много.
Ну или вот например если выражение работает не по имени тега а по другим признакам а надо чтобы порядок был, тогда при трансформации чтобы создать упорядоченный список надо процессить ещё раз - грузить машину сортировкой, в то время, как источник данных это прелестно может сделать.
Ну и последнее, чисто пользовательское, вот в банальном HTML приятно будет head искать где угодно или лучше непосредственно перед body?

Date: 2009-03-31 03:08 pm (UTC)
From: [identity profile] metaclass.livejournal.com
XSLT разве использует DTD для работы? А без DTD ему по идее неоткуда узнать о встроенном порядке.

Я эту пакость воспринимаю как усложненный вариант БД, а в реляционных БД множество колонок и кортежей не упорядоченное, поэтому всегда сортирую отдельно.

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 08:38 am (UTC) - Expand

Date: 2009-03-31 09:49 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
скорее уж будет определено при помощи схемы, и перцы получат отлуп в момент де-сериализации их xml-подобного говна в instance жаба-класса.

Date: 2009-04-01 08:44 am (UTC)
From: [identity profile] sergiej.livejournal.com
А DTD и есть схема, и если "перцы" получили DTD и XSD и если они готовят XML ручками, или какой-то своей гениальной библиотекой на забытом всеми языке, то могли бы проверить валидность своего выхода. Валидацию на входе/выходе в период отладки интеграции лучше включать всегда, иначе запуск каждого интерфейса будет занимать недели пинг-понга "а это вы не то" : "а это вы не то".

Date: 2009-04-01 09:00 am (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
ну в принципе, DTD != схеме (xml schema), дтд не позволяет задать некоторых важных ограничений, например насколько много может быть определённых элементов, уникалость ключей, итп...

А так насчёт того, что бы товарищи у себя проверяли на валидность xml-я - вполне согласен

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 09:18 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2009-04-01 09:45 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 09:51 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2009-04-01 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2009-04-01 10:15 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2009-04-01 10:16 am (UTC) - Expand

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 14th, 2025 07:50 am
Powered by Dreamwidth Studios