Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Помогите с XSL, уже крышей еду (http://forum.oszone.net/showthread.php?t=70843)

sharpp 05-09-2006 10:51 481075

Помогите с XSL, уже крышей еду
 
есть код, что в нем изменить чтобы на страницу выходили все строки а не на 2 или 3 страницы разбивались.

большое спасибо.

Код:

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="Windows-1251"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="/document">
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:param name="parent_group_id" select="blocks/parent_group_id"/>

<!-- Если в находимся корне - выводим название информационной системы -->
<xsl:if test="blocks/parent_group_id=0">
<h1><xsl:value-of disable-output-escaping="yes" select="blocks/name"/></h1>
<xsl:value-of disable-output-escaping="yes" select="blocks/description"/>
</xsl:if>

<!-- Если в находимся в группе - выводим название группы -->
<xsl:if test="blocks/parent_group_id!=0">
<h1><xsl:value-of disable-output-escaping="yes" select=".//group[@id=$parent_group_id]/name"/></h1>
</xsl:if>

<!-- ============= -->
<!-- Путь к гурппе -->
<!-- ============= -->

<xsl:apply-templates select=".//group[@id=$parent_group_id]" mode="goup_path"/>

<p/>

<!-- ========= -->
<!-- Подгруппы -->
<!-- ========= -->

<!-- Отображение подгрупп данной группы -->
<table border="0" cellspacing="0" cellpadding="2">
<tr>
<xsl:apply-templates select=".//group[@parent_id=$parent_group_id]" mode="goups"/>
</tr>
</table>

<p/>

<!--
<h1><xsl:value-of disable-output-escaping="yes" select="blocks/name"/>
<xsl:apply-templates select="blocks/groups_tree/group_node"/>
</h1>
-->
<!-- Отображение подгрупп данной группы
<table border="0" cellspacing="0" cellpadding="2" class="news_table">
<tr>
<xsl:apply-templates select="blocks/groups/group">
<xsl:sort select="@order"/>
</xsl:apply-templates>
</tr>
</table>
-->

<xsl:if test="count(blocks/items/item[item_status=1]) > 0">
<!-- Отображение записи информационного блока -->
<ul>
<xsl:apply-templates select="blocks/items/item[item_status=1]">
</xsl:apply-templates>
</ul>
</xsl:if>

<!-- Строка ссылок на другие страницы архива информационного блока -->
<xsl:if test="ОтображатьСсылкиНаСледующиеСтраницы=1">
<xsl:if test="blocks/items/count_items > blocks/items/items_on_page">
<xsl:call-template name="for">
<xsl:with-param name="n" select="blocks/items/count_items div blocks/items/items_on_page"/>
<xsl:with-param name="current_page" select="blocks/items/current_page"/>
</xsl:call-template>
</xsl:if>
</xsl:if>

<!-- Ссылка на архив -->
<xsl:if test="ОтображатьСсылкуНаАрхив=1">
<p/><a href="{blocks/url}">Архив "<xsl:value-of disable-output-escaping="yes" select="blocks/name"/>"</a>
</xsl:if>
</xsl:template>

<xsl:template match="blocks/groups_tree/group_node">
<xsl:if test="group_name!=''">
&#xA0;/ <a href="{../../url}{group_path}"><xsl:value-of disable-output-escaping="yes" select="group_name"/></a>
</xsl:if>
</xsl:template>

<xsl:template match="blocks/groups/group">
<td><a href="{/document/blocks/url}{group_url}"><xsl:value-of disable-output-escaping="yes" select="group_name"/></a></td>
<xsl:if test="position() mod 5 =0">
<tr/>
</xsl:if>
</xsl:template>

<xsl:template match="blocks/items/item">
<li>

<a href="{item_path}"><b><xsl:value-of disable-output-escaping="yes" select="item_name"/></b></a>
<br/>
<xsl:value-of disable-output-escaping="yes" select="item_description"/>
<br/>


</li>

</xsl:template>

<!-- Цикл для вывода строк ссылок -->
<xsl:template name="for">
<xsl:param name="i" select="0"/>
<xsl:param name="n"/>
<xsl:param name="current_page"/>

<xsl:if test="$n > $i">
<!-- Ставим ссылку на страницу-->
<xsl:if test="$i != $current_page">
<a href="?page={$i}">
<xsl:value-of select="$i+1"/>
</a>
</xsl:if>

<!-- Не ставим ссылку на страницу-->
<xsl:if test="$i = $current_page">
<xsl:value-of select="$i+1"/>
</xsl:if>

&#xA0;

<!-- Рекурсивный вызов шаблона. НЕОБХОДИМО ПЕРЕДАВАТЬ ВСЕ НЕОБХОДИМЫЕ ПАРАМЕТРЫ! -->
<xsl:call-template name="for">
<xsl:with-param name="i" select="$i + 1"/>
<xsl:with-param name="n" select="$n"/>
<xsl:with-param name="current_page" select="$current_page"/>
</xsl:call-template>
</xsl:if>
</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goup_path">
<xsl:param name="parent_id" select="@parent_id"/>

<xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>

<xsl:if test="@parent_id=0">
<a href="{/document/blocks/url}"><xsl:value-of disable-output-escaping="yes" select="/document/blocks/name"/></a>
</xsl:if>

->

<a href="{/document/blocks/url}{fullpath}"><xsl:value-of disable-output-escaping="yes" select="name"/></a>

</xsl:template>

<!-- ======================================================== -->
<!-- Шаблон выводит ссылки подгурппы инф. элемента -->
<!-- ======================================================== -->

<xsl:template match="group" mode="goups">
<xsl:param name="parent_id" select="@parent_id"/>

<td valign="bottom">
<xsl:if test="small_image!=''">
<a href="/upload/{big_image}" target="_blank"><img src="/upload/{small_image}"/></a>&#xA0;
</xsl:if>
<a href="{/document/blocks/url}{fullpath}"><b><xsl:value-of disable-output-escaping="yes" select="name"/></b></a>
</td>

</xsl:template>


</xsl:stylesheet>


benya 05-09-2006 11:52 481109

Вообще если Вы этот код не писали то я бы его трогал очень осторожно.
А что бы выполнить вашу задачу я бы нашел параметр (внешний прямо и таблицы или внутренний передаваемый в XML) он называется что-то типа "количество элементов на странице". Поставил бы число побольше, там 1000, ну на порядок больше чем Ваших строк. Вот бы и были все ваши строки без никаких страниц. И не нужно лазить в коде.

sharpp 05-09-2006 12:04 481118

а что здесь может за это отвечать?

benya 05-09-2006 17:39 481308

sharpp,
Вообще тяжело сказать без входного XML. Посмотрите во входном XML выводимые строки все независимо от страницы на которой находимся или их там часть (только те, которые отнотся к странице)?

P.S. Вообще неплохо было бы видеть собственно вх. XML

Vlad Drakula 05-09-2006 17:44 481315

sharpp
что то мне кажется что эта штука стоит какоето дерево...

sharpp 05-09-2006 21:05 481379

как он выглядит входного XML???? я в это деле тормоз. помогите плиз. с меня пиво

benya 05-09-2006 21:52 481386

Vlad Drakula,
В смысле?
sharpp,
Мда, Вам нужно было бы неплохо знать основы, а то Вам вообще будет непонятно.
В движок нужно лазить. Вообще он может скорее всего и не существует в виде файла, а собирается в переменную и подается на трансформацию. Нужно перед трансформацией вставить кусочек, который сохранит XML в файл, ну а потом его можно будет рассматривать.
Цитата:

как он выглядит входного XML????
Вообще это мы должны у Вас спросить, мы же не телепаты ;)


Время: 16:04.

Время: 16:04.
© OSzone.net 2001-