![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
|
Есть таблица данных. Структура на Xml представлены HTML.
Мышкой выбираю строку нужно узнать, что находиться внутри ячеек. Вообще это не обязательно с помощью Xml, может кто знает другие способы? Я пришёл к выводу, что у меня никак не получиться кроме как с помощью Xml, правда у меня и так не особо получается ... ![]()
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ... |
|
|||||
|
Бред какой-то. Шел бы ты, молодой человек, в раздел DHTML, - xml тебе не нужен, да и работать то, что ты хочешь будет только под IE.
__________________
Bright and clear. |
|
|||||
|
Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
|
Ну, во-первых, то что это будет только под IE, меня вполне устраивает.
Во-вторых, согласен я слабо знаю xml (недавно за него взялся), тогда тем более я нуждаюсь в совете. Поэтому ответ "... бред какой-то ... шёл бы ты ... (хоть и признателен что указали конечный пункт) ..." является по меньше мере не уважительным. В-третьих, объясниле бы тогда почему с помощью xml это сделать нельзя. Согласен может не понятно задал вопрос, перефразирую. Есть набор данных табличного типа. С помощью Xml структуированых. Потом связываю Xml данные с HTML-элементом Table. Получается HTML таблица с данными. Как передвигать курсор объекта recordset DSO знаю. Но как связать строку в HTML таблице со строкой данных Xml в recordset'е (нужно же знать на сколько передвинуть курсор у объекта recordset), чтобы вынуть значения, я не знаю. И просьба не надо отвечать "отписками" не имеющих конструктивных подсказок.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ... Последний раз редактировалось LaGor; 18.05.2002 в 13:23. |
|
|||||
|
Ок, попробую ответить конструктивно.
Предположим, есть у тебя 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> <?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>
Насчет "Бред какой-то" могу пояснить буквально следующее. Твою постановку задачи я прочитал четыре(4) раза и не понял, что конкретно тебе надо. Такое, согласись, бывает не часто ![]() П.С. Приведенный код, скорее всего, без напильника работать не будет - не проверял.
__________________
Bright and clear. |
|
|||||
|
Ну да, одну багу уже видать невооруженным глазом:
в темплейте row надо заменить на ![]()
__________________
Bright and clear. Последний раз редактировалось Stellerex; 18.05.2002 в 13:56. |
|
|||||
|
Регистрация: 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>
Ну дак вот вопрос в таком случае я не могу проиндефецировать каждые элемент tr (пронумеровать их по порядку), иначе можно было бы передвинуть курсор объекта recordset на нужный бы номер Xml данных по типу dsoTableData.recordset.move([индекс строки]) ... Прошу прощения, как-то сумбурно получилось, но может всё таки более понятно чем в предыдущие разы.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ... |
|
|||||
|
На мой взгляд, ты излишне усложняешь жизнь - если не требуется жуткого интерактива на странице, без ее перезагрузки, выполнять трансформацию 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;
}
Естественно, 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. |
|
|||||
|
Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
|
Мне и надо чтобы всё происходило на сервере, а клиенту посылался Html-файл (таблица с данными). А когда он выбирает строку у таблицы, данные из этой строки дальше обрабатываются в другой страничке (т.е. передаются).
Честно говоря,я не совсем понял что ты тут написал. ![]() Извини. Просто С## я не знаю, а xml плохо (что почти аналогично). Не мог бы ты объяснить поподробнее? Ещё раз извини, если напрягаю.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ... |
|
|||||
|
Ну тогда поступим так - напиши подробнее, откуда берешь данные и на чем пишешь серверную часть - может подмогну исходником. Можно по аське
![]()
__________________
Bright and clear. |
|
|||||
|
Регистрация: May 2002
Адрес: Россия, Е-бург
Сообщений: 25
|
Хорошо, давай по асе, а потом сюда выложим исходник, вдруг кому понадобиться.
__________________
... Я знаю, что я ни чего не знаю, но я ХОЧУ... |
![]() |
Часовой пояс GMT +4, время: 00:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|