Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.58 MB
Время: 0.106 c
2-1269516298
Delphist2
2010-03-25 14:24
2010.08.27
как узнать адрес процедуры?


15-1267824303
xayam
2010-03-06 00:25
2010.08.27
Эволюция восприятия реальности


2-1274677239
viktooor
2010-05-24 09:00
2010.08.27
Поис в диапазоне дат


15-1274780094
@!!ex
2010-05-25 13:34
2010.08.27
Что это?


2-1270730334
JohnKorsh
2010-04-08 16:38
2010.08.27
Можно ли из Delphi изменить IP адрес?