Главная страница
    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.56 MB
Время: 0.058 c
11-1221196936
L`Autour
2008-09-12 09:22
2010.08.27
Проблема с обработкой WM_PAINT в OnMessage


11-1207304649
Danger
2008-04-04 14:24
2010.08.27
WinInet для FPC


15-1275769777
Юрий
2010-06-06 00:29
2010.08.27
С днем рождения ! 6 июня 2010 воскресенье


15-1268472470
Незнайка на Луне
2010-03-13 12:27
2010.08.27
Как организовать своё время)


2-1267706424
Novicheck
2010-03-04 15:40
2010.08.27
Скопировать 10 символов до зяпятой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский