Текущий архив: 2010.08.27;
Скачать: CL | DM;
ВнизФорматирование HTML кода из Delphi Найти похожие ветки
← →
Piter © (2010-03-01 15:18) [0]Достаточно, на мой взгляд, актуальная задача. Связанная хотя бы с тем, что многие программы имеют возможность работать в качестве сервиса, а значит предполагается внешнее управление. Логично совместить с удаленным управлением. И тут возникает вопрос:
[Собственный клиент] vs [Браузер]
Если абстрагироваться от сложности разработки, не вижу у собственного клиента никаких преимуществ при обработке текстового ввода-вывода. У браузерного клиента же главнейшее преимущество - он есть везде, под все платформы. Поэтому достаточно логично делать выбор в пользу удаленного WEB-управления.
А дальше наступает проблема не очень удобных возможностей формирования и форматирования HTML-кода в Delphi подобном языке. Я вижу 2 решения:
1) связка с WEB-языком, например PHP. Дополнительная проблема в наличии интерфейса общения между PHP и Delphi. Все равно между ними будет аля какой-нибудь XML, что в совокупности снижает трудозатраты, но получается какое-то нагромождение... Сама программа - Delphi, чтобы управлять ею надо ставить Apache+PHP со своими проблемами и настройками. Не так уж и кошерно выходит.
2) какое-то расширение Delphi. Скриптовый язык, шаблонизатор. Смысл в том, чтобы удобно генерировать HTML-код, при этом доступ к объектам delphi... Или еще какой вид, не представляю пока.
Собственно, предлагаю подискутировать на эту тему. Уверен, с задачей сталкивалось множество людей. Конечно, в развитых технологиях аля Java EE, .NET и прочее наверняка есть готовые средства решения данной задачи. Но хочется именно в контексте Delphi это обсудить, кто какой путь выбирает.
Для определенности предлагаю считать, что проект маленького-среднего масштаба. Городить особый огород не хочется.
← →
Kerk © (2010-03-01 15:35) [1]Никто до сих пор не потрудился сделать для Delphi приличный шаблонизатор?
(я тут не в теме)
← →
Palladin © (2010-03-01 15:42) [2]Странно, как то. Желание - сделать удаленное управление приложением, а условия как - написать веб сервер. И причем тут расширение Делфи, что скрывается под понятием "расширение Делфи"? Эксперт? Скриптовый язык - не расширение, просто библиотека/набор библиотек...
← →
DVM © (2010-03-01 15:45) [3]
> Piter © (01.03.10 15:18)
Смешались в кучу кони, люди, форматирование (?) кода на делфи и управление сервисом через веб
← →
DVM © (2010-03-01 15:49) [4]
> Piter © (01.03.10 15:18)
Я делаю так:
Сервис совмещен с веб сервером. Веб сервер может принимать команды и отдавать значения (в виде XML). Собственный клиент общается с сервисом через эти XML.
Но возможна работа и через браузер. Для этого имеются шаблоны веб страниц в нужные места которых специальный класс-обработчик подставляет значения.
PHP больно геморройно. Да и нафига козе баян? Delphi побыстрее PHP будет да и привычнее.
← →
Плохиш © (2010-03-01 17:06) [5]
> Piter © (01.03.10 15:18)
WebSnap, Web-Service.
← →
Piter © (2010-03-01 17:12) [6]DVM © (01.03.10 15:49) [4]
Для этого имеются шаблоны веб страниц в нужные места которых специальный класс-обработчик подставляет значения.
тоже так делал. Но поэтому и возникла эта тема, это очень тупой шаблонизатор. По крайней мере у меня вся шаблонизация сводилась к тому, что этот "специальный класс-обработчик" искал значения аля:
%product_name%
%device_list%
в шаблоне и подставлял туда нужные значения. Но один фиг, если тебе нужен.. Ну тот же список устройств, тебе вручную придется составлять таблицу, состояющую из <td> <tr> и прочее. Тебе вручную придется отрабатывать POST / GET запросы. Я уж не говорю про работу по полной, то есть использование всех новых фишек, JS, Ajax и прочее.
DVM © (01.03.10 15:49) [4]
Веб сервер может принимать команды и отдавать значения (в виде XML).
XML ты тоже ручками форматируешь по свойствам классов или как-то так?
И еще интересно - зачем нужен свой клиент при реализации WEB-клиента?
← →
Piter © (2010-03-01 17:15) [7]Плохиш © (01.03.10 17:06) [5]
насколько я помню читал про WebSnap. И сложилось впечатление полной убогости. То есть, с одной стороны, это вроде как фундаментальный механизм, но страницы, которые он генерирует ни в какие ворота не лезут. Просто с точки зрения пользователя это выглядит мега убого.
← →
DVM © (2010-03-01 17:19) [8]
> Piter © (01.03.10 17:12) [6]
> Но поэтому и возникла эта тема, это очень тупой шаблонизатор.
Ну это полностью зависит от тебя. Захочешь, будет умный, захочешь не очень. На PHP шаблонизаторы тоже же людьми написаны. Здесь опыт определенный нужен, а на чем писать PHP или Delphi или C это уже вторично.
> Ну тот же список устройств, тебе вручную придется составлять
> таблицу, состояющую из <td> <tr> и прочее
Делается класс выводящий таблицу. Все оформление через CSS. Как в класс передать исходные данные - другой вопрос. То же для форм, и т.д. Тут целый API нагородить можно. Но я так не делал мне не нужно было. Но сделал бы при необходимости.
> XML ты тоже ручками форматируешь по свойствам классов или
> как-то так?
Ручками. См. выше про таблицу.
> И еще интересно - зачем нужен свой клиент при реализации
> WEB-клиента?
Нужен не клиент, а возможность интеграции с сервисом для сторонних программ. А клиент как иллюстрация. Да и вначале был клиент а потом появился веб интерфейс.
← →
Медвежонок Пятачок © (2010-03-01 17:24) [9]XML ты тоже ручками форматируешь по свойствам классов или как-то так?
хмл обычно дулают голым. со ссылкой на xsl который лежит соверешенно отделенным от приложения и доступен для редактирования.
плюс ксс конечно прикручивается.
на этом делается визуализация с банитиками.
управление же обычно делается html-страницами-файлами либо тоже через xml + xsl
главное чтобы встроенный веб-сервер умел отдавать дисковые файлы браузеру (xml,xsl,css,html)
← →
Piter © (2010-03-01 17:26) [10]DVM © (01.03.10 17:19) [8]
ну в общем все понятно. Ты делаешь ручками, я тоже делаю ручками.
Вопрос в том, можно ли более автоматизировать сей процесс, не разрабатывая монстроидальный THTMLGenerator и TMyTemplateParser
← →
Медвежонок Пятачок © (2010-03-01 17:26) [11]а форматировать хтмл в коде приложения - занятие унылое.
← →
Piter © (2010-03-01 17:28) [12]Медвежонок Пятачок © (01.03.10 17:24) [9]
спасибо за пост. Я только не понял какое он имеет отношение к решению сабжевой задачи.
← →
Kerk © (2010-03-01 17:29) [13]
> Piter © (01.03.10 17:28) [12]
>
> Медвежонок Пятачок © (01.03.10 17:24) [9]
>
> спасибо за пост. Я только не понял какое он имеет отношение
> к решению сабжевой задачи.
XSLT решает твою задачу просто и элегантно.
← →
Медвежонок Пятачок © (2010-03-01 17:30) [14]прямое отношение имеет.
я сам подобным занимался и очень активно использую веб-управление сервисами.
главное как я уже сказал - не поддаться соблазну генерить html код внутри exe (пусть даже супер-шаблонизатором)
используй внешние файлы и все будет легко и приятно
← →
DVM © (2010-03-01 17:31) [15]
> Медвежонок Пятачок © (01.03.10 17:26) [11]
> а форматировать хтмл в коде приложения - занятие унылое.
унылое, но иногда необходимое.
> XSLT решает твою задачу просто и элегантно.
Да, это пожалуй лучший вариант.
← →
Медвежонок Пятачок © (2010-03-01 17:33) [16]унылое, но иногда необходимое.
единственный случай вижу.
требуется дефолтная страница сервиса и пара функций пауза/ресьюм
и расширения функционала не предвидится.
и то это не необходимость, а допустимое упрощение.
← →
Piter © (2010-03-01 17:37) [17]Медвежонок Пятачок © (01.03.10 17:30) [14]
а. То есть, насколько я понял твою идею - внутри exe генерировать XML данные. Их с одной стороны можно использовать для собственного клиента, а можно с помощью XSL трансформировать в HTML-код, который и выдавать браузеру?
Проблема в том, что я ни духом, ни рылом в технологиях XML/XSLT - сколько нужно времени, чтобы въехать?
Нет ли ограничений у технологии? То есть, я например знаю как красиво это написать на HTML ручками, но в XSLT нельзя/сложно написать такую трансформацию из XML, чтобы получить требуемый HTML?
← →
DVM © (2010-03-01 17:39) [18]
> Piter © (01.03.10 17:37) [17]
> Их с одной стороны можно использовать для собственного клиента,
> а можно с помощью XSL трансформировать в HTML-код, который
> и выдавать браузеру?
Более того этот XML можно трансформировать в другой, например понятный третьей программе.
> Нет ли ограничений у технологии? Т
Есть геморрой с созданием XSLT и если их много разных то большой.
← →
DVM © (2010-03-01 17:41) [19]При большом числе разных XSLT как бы не прийти к генерации оных из EXE :) Тогда получим то же самое, но через ж...
← →
DVM © (2010-03-01 17:43) [20]
> DVM © (01.03.10 17:39) [18]
> Нет ли ограничений у технологии?
А ну и браузер должен понимать все это хозяйство.
← →
Piter © (2010-03-01 17:45) [21]разные XSLT в каком смысле? Для перекодирования в разные форматы или просто на каждую возможную HTML страницу нужен свой XSLT?
← →
Piter © (2010-03-01 17:45) [22]DVM © (01.03.10 17:43) [20]
какое хозяйство? Я так понял с помощью движка MSXML, XML файла и соответствующего ему XSL получается HTML файл. Который и подсовывается браузеру, иначе что это за браузер, который не понимает HTML.
← →
DVM © (2010-03-01 17:47) [23]
> Piter © (01.03.10 17:45) [22]
браузеру подсовывает xml в котором есть ссылка на xslt браузер совмещает сам. А как иначе то? Клиенту чистый xml браузеру xhtml ?
← →
Kerk © (2010-03-01 17:47) [24]
> Piter © (01.03.10 17:45) [21]
>
> разные XSLT в каком смысле? Для перекодирования в разные
> форматы или просто на каждую возможную HTML страницу нужен
> свой XSLT?
XSLT - это шаблон. Т.е. сколько вообще типов страниц, столько и шаблонов нужно.
← →
Медвежонок Пятачок © (2010-03-01 17:49) [25]въехать на первых порах достаточно всего в пару тройку конструкций
xsl:value-of
цикл foreach
и xsl:apply-templates
это часа полтора.
← →
DVM © (2010-03-01 17:49) [26]
> Для перекодирования в разные форматы или просто на каждую
> возможную HTML страницу нужен свой XSLT?
если они разные то может и нужен, если CSS не обойтись.
← →
Медвежонок Пятачок © (2010-03-01 17:51) [27]А как иначе то? Клиенту чистый xml браузеру xhtml ?
Ну есть еще и серверный вариант.
xml + xml c трансформ-документом на сервере
выполняем transformnode и отдаем клиенту готовый html
← →
Eraser © (2010-03-01 17:53) [28]> [1] Kerk © (01.03.10 15:35)
> Никто до сих пор не потрудился сделать для Delphi приличный
> шаблонизатор?
тут недавно искал простенький компонент hex-редактор вроде такого, как в regedit"е.. не нашел!
← →
DVM © (2010-03-01 17:54) [29]
> Медвежонок Пятачок © (01.03.10 17:51) [27]
Ну это понятно, правда приводит у необходимости как то различать клиентов на тех кому отдавать чиcтый xml и тех кому xhtml.
← →
Kerk © (2010-03-01 17:55) [30]
> Eraser © (01.03.10 17:53) [28]
>
> тут недавно искал простенький компонент hex-редактор вроде
> такого, как в regedit"е.. не нашел!
TMPHexEditor
← →
Piter © (2010-03-01 17:55) [31]DVM © (01.03.10 17:47) [23]
Клиенту чистый xml браузеру xhtml ?
а что в этом такого. Клиент работает по своему порту и там выдается XML. Браузер работает на 80 порту и ему выдается XML после преобразования через xsl, это сразу дает нативную поддержку HTML кода. Имхо так.
← →
Eraser © (2010-03-01 17:56) [32]> [17] Piter © (01.03.10 17:37)
> Проблема в том, что я ни духом, ни рылом в технологиях XML/XSLT
> - сколько нужно времени, чтобы въехать?
на третий день я уже написал действительно сложный рекурсивный шаблон. но правда было кому подсказывать, в веб-студии. за день можно почти все базовые приемчики освоить. но конечно лучше когда есть много примеров на разные случаи жизни перед глазами.
← →
Eraser © (2010-03-01 17:57) [33]> [30] Kerk © (01.03.10 17:55)
да это монстр. убил около часа, переписывая его на D2010, оказалось зря.
← →
Плохиш © (2010-03-01 17:57) [34]
> Piter © (01.03.10 17:15) [7]
>
> Плохиш © (01.03.10 17:06) [5]
>
> насколько я помню читал про WebSnap. И сложилось впечатление
> полной убогости.
Убогость заканчивается после подсовывания вму своих шаблонов. Там есть где потешить своё больное воображение :-)
PS. В VS2010 всё уже визуально делается и шаблоны и страницы. Правда ничего нового пока в идеях по сравнению с websnap не увидел...
← →
DVM © (2010-03-01 17:58) [35]
> Piter © (01.03.10 17:55) [31]
> а что в этом такого.
Да ничего. Некрасиво как то имхо и двойная работа. Можно проще по User Agent например различать.
← →
Плохиш © (2010-03-01 17:59) [36]
> в веб-студии. за день можно почти все базовые приемчики
> освоить. но конечно лучше когда есть много примеров на разные
> случаи жизни перед глазами.
в google примеров на все случаи жизни...
← →
Piter © (2010-03-01 17:59) [37]и ладно, это я более менее понимаю насчет ОТОБРАЖЕНИЯ информации.
А что насчет запросов, GET, POST? Допустим, запрос, который изменяет настройки какого-либо устройства в системе. Значит, нужно вручную в delphi-коде распарсивать запрос и указание на действия?
← →
Медвежонок Пятачок © (2010-03-01 18:01) [38]ну от разбора гет и пост все равно никуда не спрячешься
← →
DVM © (2010-03-01 18:03) [39]
> Piter © (01.03.10 17:59) [37]
> Значит, нужно вручную в delphi-коде распарсивать запрос
> и указание на действия?
Ну а кто еще будет распарсивать то? Переданные значения по любому проверять надо.
← →
Плохиш © (2010-03-01 18:13) [40]
> Piter © (01.03.10 17:59) [37]
>
> и ладно, это я более менее понимаю насчет ОТОБРАЖЕНИЯ информации.
>
>
> А что насчет запросов, GET, POST? Допустим, запрос, который
> изменяет настройки какого-либо устройства в системе. Значит,
> нужно вручную в delphi-коде распарсивать запрос и указание
> на действия?
В D7 этим занимаются классы TAdapter<xxx>
Страницы: 1 2 вся ветка
Текущий архив: 2010.08.27;
Скачать: CL | DM;
Память: 0.56 MB
Время: 0.058 c