Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > XML

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 18.05.2002, 10:22
LaGor вне форума Посмотреть профиль Отправить личное сообщение для LaGor Найти все сообщения от LaGor
  № 1  
LaGor

Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
Question Связывание строки HTML- и Xml- таблиц

Есть таблица данных. Структура на Xml представлены HTML.
Мышкой выбираю строку нужно узнать, что находиться внутри ячеек.
Вообще это не обязательно с помощью Xml, может кто знает другие способы? Я пришёл к выводу, что у меня никак не получиться кроме как с помощью Xml, правда у меня и так не особо получается ...
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ...

Старый 18.05.2002, 12:43
Stellerex вне форума Посмотреть профиль Отправить личное сообщение для Stellerex Найти все сообщения от Stellerex
  № 2  
Stellerex

Регистрация: Aug 1999
Сообщений: 277
Отправить сообщение для Stellerex с помощью ICQ
Бред какой-то. Шел бы ты, молодой человек, в раздел DHTML, - xml тебе не нужен, да и работать то, что ты хочешь будет только под IE.
__________________
Bright and clear.

Старый 18.05.2002, 13:21
LaGor вне форума Посмотреть профиль Отправить личное сообщение для LaGor Найти все сообщения от LaGor
  № 3  
LaGor

Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
Ну, во-первых, то что это будет только под IE, меня вполне устраивает.
Во-вторых, согласен я слабо знаю xml (недавно за него взялся), тогда тем более я нуждаюсь в совете. Поэтому ответ "... бред какой-то ... шёл бы ты ... (хоть и признателен что указали конечный пункт) ..." является по меньше мере не уважительным.
В-третьих, объясниле бы тогда почему с помощью xml это сделать нельзя.

Согласен может не понятно задал вопрос, перефразирую.
Есть набор данных табличного типа. С помощью Xml структуированых. Потом связываю Xml данные с HTML-элементом Table. Получается HTML таблица с данными. Как передвигать курсор объекта recordset DSO знаю. Но как связать строку в HTML таблице со строкой данных Xml в recordset'е (нужно же знать на сколько передвинуть курсор у объекта recordset), чтобы вынуть значения, я не знаю.
И просьба не надо отвечать "отписками" не имеющих конструктивных подсказок.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ...


Последний раз редактировалось LaGor; 18.05.2002 в 13:23.
Старый 18.05.2002, 13:49
Stellerex вне форума Посмотреть профиль Отправить личное сообщение для Stellerex Найти все сообщения от Stellerex
  № 4  
Stellerex

Регистрация: Aug 1999
Сообщений: 277
Отправить сообщение для Stellerex с помощью ICQ
Ок, попробую ответить конструктивно.
Предположим, есть у тебя xml следующего вида:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<tableinfo>
<row id="1">
<column>1</column>
<column>2</column>
<column>3</column>
</row>
<row id="2">
<column>4</column>
<column>5</column>
<column>6</column>
</row>
</tableinfo>
, описывающий твои данные в табличной форме. Предположим, что ты сделал xsl'ку, выполняющую трансформацию этого xml'я в html:

Код:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="tableinfo">
<script language="javascript">
function doRowClick(row_id) {
  alert('row with id=' + row_id + ' clicked');
}
</script>

<table>
<html>
<head>
<title>Sumthin' blablabla<title>
</head>
<body>
<xsl:apply-templates select="row"/>
</table>
</body>
</html>
</xsl:template>

<xsl:template match="row">
<tr rowid="{@id}" onclick="doRowClick('{@id}')">
<xsl:apply-templates select="row"/>
<tr>
</xsl:template>

<xsl:template match="column">
<td><xsl:value-of select="."><td>
</xsl:template>

</xsl:stylesheet>
Собственно, все. После этого, при тычке на любую строку в таблице вызывается джаббаскриптовая функа doRowClick() с параметром - идентификатором строки. Опосля этого через document DOM обращайся к любому элементу этой строки.

Насчет "Бред какой-то" могу пояснить буквально следующее. Твою постановку задачи я прочитал четыре(4) раза и не понял, что конкретно тебе надо. Такое, согласись, бывает не часто

П.С. Приведенный код, скорее всего, без напильника работать не будет - не проверял.
__________________
Bright and clear.

Старый 18.05.2002, 13:54
Stellerex вне форума Посмотреть профиль Отправить личное сообщение для Stellerex Найти все сообщения от Stellerex
  № 5  
Stellerex

Регистрация: Aug 1999
Сообщений: 277
Отправить сообщение для Stellerex с помощью ICQ
Ну да, одну багу уже видать невооруженным глазом:
в темплейте row
Код:
<xsl:apply-templates select="row"/>
надо заменить на
Код:
<xsl:apply-templates select="column"/>
__________________
Bright and clear.


Последний раз редактировалось Stellerex; 18.05.2002 в 13:56.
Старый 18.05.2002, 15:17
LaGor вне форума Посмотреть профиль Отправить личное сообщение для LaGor Найти все сообщения от LaGor
  № 6  
LaGor

Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
Stellerex я действительно плохо знаю xml (точнее сказать я его практически и не знаю). Поэтому у меня возникли некоторые трудности. Я сделал эти два файла, вроде все ошибки исправил, но как из них получить конечный html файл? (может это и покажется смешно). Просто у тебя как-то всё наоборот сделано. Я обычно делал html файл в нём подключал xml, а в xml указывал на xsl, т.е. в конечном счёте получался html. Видишь дело в чём мне надо получить один html файл в конечном итоге. (поясню: у меня на сервере обрабатываются данные, формируется html-документ и отправляется клиенту от которого был запрос)
Может проще будет если я напишу как делал, а ты посмотришь и подскажешь?
Пусть xml будет встроен в html.

Код:
<HTML>
<Head><Title>Тест</Title></Head>
<body>
<xml id="dsoTableData">
  <?xml version="1.0"?>
  <TableData>
    <row>  
      <fld1>1.1</fld1>
      <fld2>1.2</fld2>
      <fld3>1.3</fld3>
    </row>
    <row>  
      <fld1>2.1</fld1>
      <fld2>2.2</fld2>
      <fld3>2.3</fld3>
    </row>
    <row>  
      <fld1>3.1</fld1>
      <fld2>3.2</fld2>
      <fld3>3.3</fld3>
    </row>
  </TableData>
</xml>
<table datasrc="#dsoTableData" border="1">
<tr>
    <td><span datafld="fld1"></span></td>
    <td><span datafld="fld2"></span></td>
    <td><span datafld="fld3"></span></td>
</tr>
</table>
</body>
</HTML>
Получается что в элементе table определена тока одна строка, когда браузер отображает таблицу, он повторяет строковые элементы для каждой записи в Xml.
Ну дак вот вопрос в таком случае я не могу проиндефецировать каждые элемент tr (пронумеровать их по порядку), иначе можно было бы передвинуть курсор объекта recordset на нужный бы номер Xml данных по типу
dsoTableData.recordset.move([индекс строки]) ...

Прошу прощения, как-то сумбурно получилось, но может всё таки более понятно чем в предыдущие разы.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ...

Старый 18.05.2002, 15:42
Stellerex вне форума Посмотреть профиль Отправить личное сообщение для Stellerex Найти все сообщения от Stellerex
  № 7  
Stellerex

Регистрация: Aug 1999
Сообщений: 277
Отправить сообщение для Stellerex с помощью ICQ
На мой взгляд, ты излишне усложняешь жизнь - если не требуется жуткого интерактива на странице, без ее перезагрузки, выполнять трансформацию xml -> html через xslt лучше всего на сервере. Клиенту в этом случае приходит чистый html-код, скрывающий реализацию. Пример на c#:
Код:
protected String getXMLTransformResult() {
	XmlDocument doc = new XmlDocument();
	XmlDocument result = new XmlDocument();
	XmlNode node = result.AppendChild(result.CreateElement("root"));

	XmlDocument stylesheet = new XmlDocument();
	XslTransform transform = new XslTransform();

	XsltArgumentList arguments = new XsltArgumentList();
	fillXsltArgumentList(ref arguments);

	doc.Load(Server.MapPath(@"data/properties.xml"));
	stylesheet.Load(Server.MapPath(@"data/properties.xsl"));
	transform.Load(stylesheet);

	XmlReader reader = transform.Transform(doc, arguments);
	for (reader.Read(); !reader.EOF; )
		node.AppendChild(result.ImportNode(doc.ReadNode(reader), true));
	reader.Close();

	return node.InnerXml;
}
Аналогично делается на java, php етс.
Естественно, xml не обязательно грузить с диска
Если же ты маньяк и все трансформации позарез надо делать на клиенте, вот пример из MSDN:

Код:
<SCRIPT LANGUAGE="JScript">

  var oMenuXml = new ActiveXObject("Microsoft.XMLDOM");
  oMenuXml.async = false;
  oMenuXml.load("webdev.xml");

  var oMenuXsl = new ActiveXObject("Microsoft.XMLDOM");
  oMenuXsl.async = false;
  oMenuXsl.load("menus_1.xsl");

</SCRIPT>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JScript">

  document.write(oMenuXml.transformNode(oMenuXsl.documentElement));

</SCRIPT>
__________________
Bright and clear.

Старый 20.05.2002, 16:53
LaGor вне форума Посмотреть профиль Отправить личное сообщение для LaGor Найти все сообщения от LaGor
  № 8  
LaGor

Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
Мне и надо чтобы всё происходило на сервере, а клиенту посылался Html-файл (таблица с данными). А когда он выбирает строку у таблицы, данные из этой строки дальше обрабатываются в другой страничке (т.е. передаются).
Честно говоря,я не совсем понял что ты тут написал.
Извини. Просто С## я не знаю, а xml плохо (что почти аналогично). Не мог бы ты объяснить поподробнее?
Ещё раз извини, если напрягаю.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ...

Старый 20.05.2002, 19:26
Stellerex вне форума Посмотреть профиль Отправить личное сообщение для Stellerex Найти все сообщения от Stellerex
  № 9  
Stellerex

Регистрация: Aug 1999
Сообщений: 277
Отправить сообщение для Stellerex с помощью ICQ
Ну тогда поступим так - напиши подробнее, откуда берешь данные и на чем пишешь серверную часть - может подмогну исходником. Можно по аське
__________________
Bright and clear.

Старый 21.05.2002, 08:25
LaGor вне форума Посмотреть профиль Отправить личное сообщение для LaGor Найти все сообщения от LaGor
  № 10  
LaGor

Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
Хорошо, давай по асе, а потом сюда выложим исходник, вдруг кому понадобиться.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ...

Создать новую тему   Часовой пояс GMT +4, время: 01:55.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:55.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.