powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSL подстановка данных в таблицу. Организация переходов!
14 сообщений из 14, страница 1 из 1
XSL подстановка данных в таблицу. Организация переходов!
    #35410177
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некий файл tema3.xml содержащий описание элементов item. Каждой "группе" item присвоен свой ID. Для преобразования в HTML используется tema3.xsl. На выходе получается таблица с выборкой элементов по определенному параметру ID. В настоящий момент по ID равному "reg1"
? Как организовать заполнение этой же таблицы с ID отличному от "reg1" при переходе по ссылкам в виде текста или кнопок?
Возможно ли это средствами XSL. Я думаю что надо подключать Java установив значение ID в tema3.xsl в качестве переменной, но не знаю как. Помогите кто чем может! Очень надо!

Листинг: tema3.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="tema4.xsl"?>
<items>
<item id= "reg1">
<region>reg1</region>
<locatia>loc1</locatia>
<name>name1</name>
<description>Var1</description>
<cost>11</cost>
<images>1.jpeg</images>
</item>
<item id= "reg2">
<region>reg2</region>
<locatia>loc2</locatia>
<name>name2</name>
<description>Var2</description>
<cost>22</cost>
<images>2.jpeg</images>
</item>
<item id= "reg3">
<region>reg3</region>
<locatia>loc3</locatia>
<name>name3</name>
<description>Var3</description>
<cost>33</cost>
<images>3.jpeg</images>
</item>
</items>

Листинг:tema3.xsl

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title></title></head>
<body bgcolor="#FFFFFF">
<center>

<table style="margin-top:5px" cellSpacing="0px" width="520px" cellPadding="4px">
<tr>
<td align="center" colspan="3" bgcolor="#003366">
<font name="verdana" size="2em" color="#ffcc33">
<b><xsl:value-of select="//region"/></b>
</font>
</td>
</tr>
</table>

<table cellSpacing="0px" width="520px" border="1px" cellPadding="4px">
<xsl:for-each select="items/item">
<xsl:if test="@id = 'reg1'">
<tr>
<td class="tabelhead" colspan="3" bgcolor="#ffcc33">
<xsl:value-of select="locatia"/> <![CDATA[ • ]]>
<xsl:value-of select="name"/>
</td>
</tr>
<tr valign="top">
<td width="150" align="left">
<a target="_blank">
<xsl:attribute name="href">
<xsl:value-of select="images"/>
</xsl:attribute>
<img border="0" width="150">
<xsl:attribute name="src">
<xsl:value-of select="images"/>
</xsl:attribute>
</img>
</a>
</td>
<td class="text">
<xsl:value-of select="description"/>
</td>
<td class="text">
<xsl:value-of select="cost"/>
</td>
</tr>
</xsl:if>
</xsl:for-each>
</table>

<table>
<tr>
<td width="115">
<a href="test.xml">A-Z</a>
</td>
</tr>
</table>
</center>
</body>
</html>
</xsl:template>
</xsl:stylesheet>


Может я тут много чего лишнего наворотил, извините я только учусь!
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35410314
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть сервер, то это все делается через <xsl:param>

Если сервера нет, а все делается на клиенте, то самый простой способ это сгенерировать html по всем id, а лишние данные позакрывать дивами с dislplay: none и потом на JavaScript нужные дивы показывать, а ненужные скрывать

С уважением, Vasilisk
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35411073
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_Если есть сервер, то это все делается через <xsl:param>

Если сервера нет, а все делается на клиенте, то самый простой способ это сгенерировать html по всем id, а лишние данные позакрывать дивами с dislplay: none и потом на JavaScript нужные дивы показывать, а ненужные скрывать

С уважением, Vasilisk

Спасибо за ответ.
Можно ли подробнее описать метод когда преобразование осуществляется на клиенте?
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35412656
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astebco _Vasilisk_сгенерировать html по всем id, а лишние данные позакрывать дивами с dislplay: none и потом на JavaScript нужные дивы показывать, а ненужные скрывать
Можно ли подробнее описать метод когда преобразование осуществляется на клиенте?
Куда еще подробнее? Что может быть непонятного?
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413521
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_ astebco _Vasilisk_сгенерировать html по всем id, а лишние данные позакрывать дивами с dislplay: none и потом на JavaScript нужные дивы показывать, а ненужные скрывать
Можно ли подробнее описать метод когда преобразование осуществляется на клиенте?
Куда еще подробнее? Что может быть непонятного?

Спасибо большое, за совет использовать div + Java, еще больше пошел впрок Ваш упрек по поводу того "Что тут может быть непонятного?" . При моем знании Java пришлось немного поднапрячься. По моему получилось коряво, но работает.

С большим уважением
Astrebco

Кому интересно смотрите прикрепленные файлы, буду рад критике и другим решениям.
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413548
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astebcoСпасибо большое, за совет использовать div + Java, еще больше пошел впрок Ваш упрек по поводу того "Что тут может быть непонятного?" . При моем знании Java пришлось немного поднапрячься. По моему получилось коряво, но работает.
Ну НЕ ИСПОЛЬЗУЕТСЯ у Вас Java! Java это серверный язык. На нем пишутся аплеты. А у Вас исплоьзуется JavaScript.

Java примерно так же отлтчается от JavaScript, как JavaScript от С++
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413570
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форматирование XSL кода безобразное, ну да ладно. А вот конкретный вопрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function show(id)
{
	el = document.getElementById(id);
	if (el.style.display == 'none')
	{
		el.style.display = '';
		el = document.getElementById('sare' + id);
		
	} else {
		el.style.display = 'none';
		el = document.getElementById('sare' + id);
	}
}
function hide(id)
{
	el = document.getElementById(id);
	if (el.style.display == 'block')
	{
		el.style.display = '';
		el = document.getElementById('sare' + id);
	} else {
		el.style.display = 'none';
		el = document.getElementById('sare' + id);
	}
}
1) В чем великий смысл выделенных строк? И почему их нельзя вынести за пределы блока if?
2) Какая тайна скрывается за строкой
Код: plaintext
el.style.display = '';
?
3) Функция show у Вас нифига не показывает
4) Если Вы не планируете никуда переходить, то указывайте тег <a> так
Код: plaintext
<a onclick="..." href="#">

Может я чего не понимаю, но я бы переписал Ваш код так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function show(id)
{
	document.getElementById(id).display = 'block';
}
function hide(id)
{
	document.getElementById(id).display = 'none';
}
А с точки зрения красоты ябы вообще написал бы так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<script type="text/javascript">
  var ids = new Array("info", "nfo", "fo");
  var len = ids.length;
  function show(id) {
    for (var i =  0 ; i < len; i++) {
      var disp = (ids[i] == id) ? 'block' : 'none';
      document.getElementById(ids[i]).display = disp;
    }
    return false;
  }
</script>
......
<a id="sareinfo" onclick="javascript:show('info')" href="#">reg1</a>
<a id="sareinfo" onclick="javascript:show('nfo')" href="#">reg2</a>
<a id="sareinfo" onclick="javascript:show('fo')" href="#">reg3</a>

С уважением, Vasilisk
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413716
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Vasilisk, не устаю удивляться собственной тупости и отсутствию элементарных знаний.
Но как бы то ни было IE в вашем примере ругается следующим образом

Код:
1.
2.
3.
 В этом месте пробел не допускается. Ошибка при обработке ресурса ''file:///C:/Documents and Settings/Раб...

    for (var i = 0; i < len; i++) {
-----------------------^ 

Ваши земечания учел, обещаю не путать Java и JavaScript. Кстати пытался использовать подобную функцию найденную где то в инете.
Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 <script type="text/javascript">
function hide()
{
for(i=0; i<hide.arguments.length; i++)
{
document.getElementById(hide.arguments ).style.display = 'none';
}
}

function show(id)
{
hide('d1', 'd2', 'd3'); 
document.getElementById(id).style.display = 'block';
}
</script>
Не идет!
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413736
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astebcoНо как бы то ни было IE в вашем примере ругается следующим образом
вместо < используйте & lt; (без пробелов)
astebcoКстати пытался использовать подобную функцию найденную где то в инете.
Идея красивая
astebco Не идет!
И, что говорит?

P.S. Тут используется не [code], a [src]
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35413758
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To : Vasilisk

Замена "<" на "& lt;" без пробела ЭТО ТО ЧТО НАДО!
Все заработало мой пример который до этого не шел - ТОЖЕ!

Огромная благодарность за мои "широко открытые глаза".
Общение с Вами настоящее удовольствие!
ЗЫ. Мой "чайник" от знакомства с XML+XSL кипит менее 2-х недель, а от JavaScript и того меньше,
это к слову о невнятности синтаксиса обоих, но на радостях даже могу признать что неповоротлив как слон.

Люблю когда ругают умные люди.
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35426889
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот первый восторг прошел и следующая мысль такова: вышеописанный вариант хороший, но при условии что исходных данных не так уж и много. Поэтому в неустанных поисках был почти найден следующий вариант (почти, потому что не вполне рабочий): передавать на HTML страницу только соответствую выборку значений из файла XML + файл форматирования XSL. В роли фильтра выступает пременная которую определяет функция JavaScript. Все бы хорошо и переменная по ссылке передается и при обращении
Код:
<xsl:value-of select="$subj"/>
на HTML странице появляется соответствующее значение, но про попытке задействовать эту же переменную в выражении
Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
  
  <xsl:choose>
     <xsl:when test="discipline=$subj">
    <tr><td>
     <xsl:value-of select="name"/></td> 
     <td>
         <xsl:value-of select="email"/></td>
      </tr>
     </xsl:when>
    </xsl:choose> 

нет никаких результатов.
Пожалуйста подскажите где ошибка, если вобще такого рода обращения можно осуществлять локально т.е. не на сервер.
В архиве 3 файла стартовый HTML, XML и XSL.
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35426999
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
astebcoПожалуйста подскажите где ошибка
Трындец! Ну почитайте же наконец документацию!

MSXML SDKJScript Syntax
Код: plaintext
boolValue = oXMLDOMDocument.load(xmlSource);
Parameters
xmlSource
A string containing a URL that specifies the location of the XML file.

Return Value
Boolean. Returns True if the load succeeded; False if the load failed.

Example
The following script example creates a DOMDocument object and uses the load method to load a local XML file.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");
xmlDoc.async = false;
xmlDoc.load("books.xml");
if (xmlDoc.parseError.errorCode !=  0 ) {
   var myErr = xmlDoc.parseError;
   WScript.Echo("You have error " + myErr.reason);
} else {
   WScript.Echo(xmlDoc.xml);
}
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35427002
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще, Вы знаете о существовании элемента <xsl:if>?
И зачем Вам пространство имен xmlns:fo="http://www.w3.org/1999/XSL/Format"? Или шоб було?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
XSL подстановка данных в таблицу. Организация переходов!
    #35429626
astebco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_Трындец! Ну почитайте же наконец документацию!
Справедливо. Почитал. Самое обидное - помогло не это. Зато пошлось еще раз пересматривать код, где наконец разглядел что всего то надо в xmlDoc.load("contactsextra.xml") поменять на xmlDoc.load("contactsuseparm.xml"). Вот такой вот откровенный ляп.

_Vasilisk_И еще, Вы знаете о существовании элемента <xsl:if>?
Если это вопрос по поводу того почему в примере не ихпользовался этот элемент вместо нагромождения
Код: plaintext
1.
2.
3.
<xsl:choose>
     <xsl:when test="">...........
         </xsl:when>
    </xsl:choose>
, то Да. Наверное было не принципиально, главное чтоб сработало, но поменяю обязательно.

_Vasilisk_И зачем Вам пространство имен xmlns:fo="http://www.w3.org/1999/XSL/Format"? Или шоб було?
Извините снова недогляд(будь он неладен): к конкретному примеру это выражение никакого отношения не имеет. Просто забыл удалить.

Вам Vasilisk, большое спасибо!
С уважением AStrebco

Народная мудрость от меня: Если большая часть работы была сделана ночью, приготовьтесь потратить следующий день выискивая ошибки.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSL подстановка данных в таблицу. Организация переходов!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]