Генерация html-файла с динамической таблицей

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Генерация html-файла с динамической таблицей

Сообщение kibernetics » 23.03.2009 (Пн) 19:23

а никто не подскажет, может есть алгоритм, посмотреть, как сформировать страницу html с динамической таблицей?
как я понимаю, это шапка файла, потом, в цикле создание tr и td?
sHeader = "<html><body><table>"
sBody = "мой цикл для создания td и tr"
sFooter = "</html></body></table>"

sMyHTML = sHeader & sBody & sFooter

таким образом? никто не занимался таким вопросом?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16489
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Генерация html-файла с динамической таблицей

Сообщение Хакер » 23.03.2009 (Пн) 19:24

Несколько миллионов людей занимались подобными проблемами. Так, как ты хочешь, с большой натяжкой допустимо, но всё равно криво и неправильно.

Правильно: через специальные DOM-методы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Генерация html-файла с динамической таблицей

Сообщение RayShade » 23.03.2009 (Пн) 19:26

Я такое делаю через XSL. Любой другой способ - ересь.
I don't understand. Sorry.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Генерация html-файла с динамической таблицей

Сообщение kibernetics » 23.03.2009 (Пн) 21:00

друзья, дайте кусочек кода, - начать копать...
вообще далёк. ни разу не приходилось сталкиваться. а надо позарез

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Генерация html-файла с динамической таблицей

Сообщение RayShade » 23.03.2009 (Пн) 21:12

Короче, делается все это так. Допустим, у нас есть какие-то данные. Мы их представляем в виде XML :) Скажем, нам надо хранить данные о людях. Ну там, имя, возраст и пол. Для этого нам надо такой XML:
Код: Выделить всё
<data>
<person name="Vasya" age="20" gender="M"/>
<person name="Petya" age="21" gender="M"/>
<person name="Kolya" age="15" gender="M"/>
<person name="Dasha" age="23" gender="F"/>
</data>

Код: Выделить всё
<xsl:stylesheet>
<xsl:template match="/">
<table>
<xsl:for-each select="//data/person">
<tr>
<td><xsl:value-of select="@name"/></td>
<td><xsl:value-of select="@age"/></td>
<td><xsl:value-of select="@gender"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>


Прелесть в том, что шаблон можно быстро и легко менять. Или вообще сделать пять разных шаблонов на 1 и тот же блок данных и генерить HTML какой надо :)
I don't understand. Sorry.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Генерация html-файла с динамической таблицей

Сообщение iGrok » 23.03.2009 (Пн) 21:36

Эмм.. Если я вас всех правильно понял, то:
1) Хакер имел в виду, что формировать таблицу динамически на уже загруженной странице нужно DOM-методами.
2) А Рей имел в виду, что формировать таблицу с каким-то дизайном для сайта лучше(и я с ним соглашусь) при помощи связки xml+xsl(t).

При этом Хакер говорил об уже загруженной в браузер(или WebBrowser контрол, или MSHTML-объект) странице, а Рей про серверные скрипты на каком-либо ресурсе.

Но вообще говоря, если нужно серверным скриптом(или вообще программой на VB6, генерирующей html-файл.. Я правильно понял, что нужно было автору?) динамически сделать маленькую табличку из 5-10 строк "для себя" можно и более простым способом. Т.е. действительно шапка (<table> <thead> <th>..</th> ... <th>..</th> </thead> <tbody>) + строки с нужными значениями(<tr> <td> ... </td> ... <td> ... </td> </tr>) + подвал (</tbody> <tfoot> <tr> <td> ... </td> ... <td> ... </td> </tr> </tfoot> </table>)..
Последний раз редактировалось iGrok 23.03.2009 (Пн) 21:41, всего редактировалось 1 раз.
label:
cli
jmp label

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Генерация html-файла с динамической таблицей

Сообщение kibernetics » 23.03.2009 (Пн) 21:39

хорошо, вот у меня есть данные:
Код: Выделить всё
<data>
<param1>value</param1>
<param2>value</param2>
<param3>value</param3>
</data>


мне нужно вынести всё это в таблицу:
Код: Выделить всё
param1 value
param2 value
param3 value


и ещё, как лучше помечать <param> в xml чтобы его значение выводилось как ссылка?
чтобы в итоге получить таблицу такого плана:

param1 value
param2 value
param3 value

как отформатить в данном случае xsl?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Генерация html-файла с динамической таблицей

Сообщение RayShade » 23.03.2009 (Пн) 21:55

Шаблон можно использовать вот такой:
Код: Выделить всё
<xsl:stylesheet>
<xsl:template match="/">
<table>
<xsl:for-each select="//data/*[starts-with(name(),'param')]">
<tr>
<td><xsl:value-of select="name()"/></td>
<td><a href="#"><xsl:value-of select="text()"/></a></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>


Как хранить данные в XML для получения ссылки - неважно. Ссылку можно сделать саму в XSL из любых данных, главное просто знать где они лежат.
I don't understand. Sorry.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Генерация html-файла с динамической таблицей

Сообщение kibernetics » 23.03.2009 (Пн) 22:07

RayShade писал(а):Как хранить данные в XML для получения ссылки - неважно. Ссылку можно сделать саму в XSL из любых данных, главное просто знать где они лежат.

спасибо дружище, табличка получилась 8) .
но, всё равно не до конца ясно с ссылками.

я то незнаю, где они лежат. я могу просто изначально при генерации xml-файла уточнять, мол, у параметра есть значение-ссылка. но как в таком случае поправить xsl? чтобы он формировал готовый линк?
например, вот таким образом создам xml:
Код: Выделить всё
<data>
<param1>value</param1>
<param2 link="adres">value</param2>
<param3>value</param3>
</data>

получится ли в таком случае создать необходимый шаблон?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Генерация html-файла с динамической таблицей

Сообщение dr.MIG » 23.03.2009 (Пн) 22:57

Получится. В XSL измени строчку таким образом: <td><a href="{@link}"><xsl:value-of select="text()"/></a></td>.
Salus populi suprema lex

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Генерация html-файла с динамической таблицей

Сообщение iGrok » 23.03.2009 (Пн) 22:59

dr.MIG писал(а):Получится. В XSL измени строчку таким образом: <td><a href="{@link}"><xsl:value-of select="text()"/></a></td>.

Ммм.. Чисто для собственного развития, а получится сделать так, чтобы если у тега нет аттрибута link, анкор не создавался?
label:
cli
jmp label

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Генерация html-файла с динамической таблицей

Сообщение kibernetics » 23.03.2009 (Пн) 23:04

спасибо народ. вообще высшая тема, чего я про неё ничего не знал раньше....

только dr.MIG, всё равно получаются все значения ссылками,
а нужно чтобы там где нету атрибута link, выводилось значение в виде обычного текста, а там где есть атрибут link чтоб выводилось гиперссылкой

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Генерация html-файла с динамической таблицей

Сообщение dr.MIG » 23.03.2009 (Пн) 23:37

Может можно оптимальнее, но на сон грядущий ничего лучше в голову не лезет :)

Код: Выделить всё
<xsl:if test="@link">
<a href="{@link}"><xsl:value-of select="text()"/></a>
</xsl:if>
<xsl:if test="not(@link)">
<xsl:value-of select="text()"/>
</xsl:if>
Salus populi suprema lex

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Генерация html-файла с динамической таблицей

Сообщение RayShade » 24.03.2009 (Вт) 10:52

Вот так немножко красивше :)
Код: Выделить всё
<xsl:choose>
<xsl:when test="@link">
<a href="{@link}"><xsl:value-of select="text()"/></a>
</xsl:when>
<xsl:otherwise>
<span><xsl:value-of select="text()"/></span>
</xsl:otherwise>
</xsl:choose>


Вот так через одно место, но тоже красиво, да:
Код: Выделить всё
<xsl:variable name="tagName">
<xsl:choose>
<xsl:when test="@link">a</xsl:when>
<xsl:otherwise>span<</span>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="{$tagName}">
<xsl:if test="string-length($tagName)=1">
<xsl:attribute name="href"><xsl:value-of select="@link"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="."/>
</xsl:element>
I don't understand. Sorry.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 949
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Генерация html-файла с динамической таблицей

Сообщение kibernetics » 24.03.2009 (Вт) 12:02

Гениально!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 13

    TopList