powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Нумеровка страниц в схеме xsl
25 сообщений из 25, страница 1 из 1
Нумеровка страниц в схеме xsl
    #36725421
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делаю отчет по xml с помощью xlt.
Вывожу список фамилий,число которых не постоянное.
Скажите пожалуйста, как отслеживать конец страницы.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36725682
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

придумать условие конца страницы.

например, выяснить эксперементально что таким-то шрифтом с такими-то полями лезет 35 строк текта...
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36726042
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

Куда выводе результат???
Вы ипользуете FOP?на выходе у вас PDF или RTF?
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36727375
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anton_Demin
Я просто делаю визуализацию xml в html - редакторе.

Andry Trushin
Всё получилось с помощью условия.
А страницу вывожу так:
Код: plaintext
1.
<td>Стр.</td>
<td><xsl:value-of select="position()+1"/></td>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36737745
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я совсем запуталась с этими страницами, начнём сначала. Есть хml файл:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<Анкета>
     ...
<Сотрудник>
    <ФИО>Иванов</ФИО>
</Сотрудник>
<Сотрудник>
    <ФИО>Петров</ФИО>
</Сотрудник>
<Сотрудник>
    <ФИО>Сидоров</ФИО>
</Сотрудник>
     ...
<Анкета>

Нужно вывести вверху номер страницы,начиная с "2". И выводить например по 20 фамилий.

Следующим кодом я вывожу все фамилии без разделения на страницы.

Код: plaintext
1.
2.
3.
4.
5.
6.
 <xsl:variable name="fio" select="Анкета/Сотрудник" />
        <xsl:for-each select="$fio">
      <tr><td>
       <xsl:value-of select="position()"/>
      </td><td > 
   <xsl:value-of select="ФИО"/></td></tr>
        </xsl:for-each>
А дальше сделать не получается.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36737875
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А номер страницы вывожу так:
Код: plaintext
1.
 <xsl:variable  name="page" select="2"/>
             <xsl:value-of select="$page"/>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36738161
Фотография Anton_Demin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АльтаирА номер страницы вывожу так:
Код: plaintext
1.
 <xsl:variable  name="page" select="2"/>
             <xsl:value-of select="$page"/>

А если страницы надо формируются динамически, если ты не знаешь сколько у тебя страниц займет отчет 1 или 20, ЧТО ТЫ ДЕЛАТЬ БУДЕШЬ?
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36738228
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я понимаю, что нужна формула.и номер страницы где-то увеличивать
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36739223
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

<xsl:variable name="page_size" select="35" />
<xsl:variable name="fio" select="Анкета/Сотрудник" />

<TABLE>
<TR>

<xsl:for-each select="$fio">
<TD>
<xsl:value-of select="position()"/>
</TD>
<TD >
<xsl:value-of select="ФИО"/>
</TD>
<xsl:if test="position() mod $page_size = 0">
<xsl:text disable-output-escaping="true">
<![CDATA[
</TR>
</TABLE>
<BR STYLE="page-break-after: always" />
<TABLE>
<TR>
]]>
</xsl:text>
</xsl:for-each>
</TR>
</TABLE>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36739615
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!!! Получилось, но не до конца
Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
 
 <xsl:variable name="page_size" select="25" />
<xsl:variable name="fio" select="Анкета/Сотрудник" />  
  <table">
 <tr><td></td><td>
 <xsl:variable  name="page" select=" 2 "/>
             <xsl:value-of select="$page"/></td></tr>
<tr><td>... Шапка ...</td><td></td></tr>
<xsl:for-each select="$fio">

<tr><td><xsl:value-of select="position()"/></td>
      <td> <xsl:value-of select="ФИО"/></td>
        <xsl:if test="position() mod $page_size =  0 ">
        <xsl:text disable-output-escaping="yes">
<![CDATA[
</tr>
<tr><td></td><td>...Подписи на странице...</td></tr>
</table>
<table><tr ><td>...Шапка...</td><td></td></tr></table>  //Шапка отображается нормально, но на последней странице,где уже нет сотрудников,
она отображается тоже :(
<br style="page-break-after: always" />
<table>

 <tr><td></td><td>
            
             <xsl:value-of select="$page+ 1 "/></td></tr>         //здесь пытаюсь вывести номер страницы,но ничего не выводится
               
<tr>
]]>
</xsl:text>
 </xsl:if>
 </tr>
</xsl:for-each>

</table> 
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36739646
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И правильно. Вам нужно <xsl:value-of> вынести из CDATA
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36739647
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_И правильно. Вам нужно <xsl:value-of> вынести из CDATAИ из <xsl:text>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36739873
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вынесла из <xsl:text> - номер страницы прибавился только один раз
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743048
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как написать правильно что-то типа этого:
<xsl:value-of select="$page=$page+1"/>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743798
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

Код: plaintext
Page: <xsl:value-of select="position() div $page_size" />
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743840
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Страницы пишутся.
Возникла ещё одна проблема, когда на последнем листе число сотрудников не заполняет полностью лист. Делаю дополнительное условие:

Код: plaintext
 <xsl:if test="position() mod $page_size!=0"> и 	<xsl:if test="position()= last()">
Здесь подписи находятся не внизу страницы, а посередине. Пытаюсь вставить нужное количество пустых строк. Считаю, сколько строк нужно:
Код: plaintext
1.
   <xsl:variable name="page_probel" select="$page_size - (position() mod $page_size)" />
   <xsl:value-of select="$page_probel"/>
А как вставить эти строки не знаю, раз переприсваивать переменные нельзя.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743889
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

с некоторыми вариациями можно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xsl:template name="doRow">
   <xsl:param name="currentRow"/>
   <xsl:param name="totalRow"/>
   
   <BR /> <!-- Любой код для HTML представления строки -->

   <xsl:if test="$currentRow < $totalRow">
      <xsl:call-template name="doRow">
           <xsl:with-param name="currentRow" select="$currentRow + 1" />
           <xsl:with-param name="currentRow" select="$totalRow" />
      </xsl:call-template>
   </xsl:if>
</xsl:template>

ну и запускать так:
Код: plaintext
1.
2.
3.
4.
<xsl:call-template name="doRow">
     <xsl:with-param name="currentRow" select="1" />
     <xsl:with-param name="currentRow" select="$page_probel" />
</xsl:call-template>
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743893
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
знак < в предидущем коде заменить на &lt;
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36743910
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и в имени второго параметра я ошибся. но суть рекурсии понятна. еще вероятно правильно вывод строки в проверку поместить, чтобы можно было не думая в totalRow запихнуть 0.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36744045
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё получилось! Спасибо :)
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36745147
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите, пожалуйста, а как сделать:
<xsl:if test="$str1 = $str2">
если $str1 и $str2 - строки. Знак равно почему-то не работает в этом случае.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36745517
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, заработало, только если написать так:
<xsl:variable name="str_" select="ФИО"/>
<xsl:variable name="str2" select="string($str)"/>

<xsl:if test="string('hhh') = $str2">

Зачем такие извращения не понятно...
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36745714
Andry Trushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

а как вы узнали, что знак "=" не работает?
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36745837
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает, просто нужно было перевести в string переменные. Но когда я написала так:
<xsl:if test="string('hhh') = string($str)">
то ничего не работало, вот я и подумала что знак равно нужно было написать как символ.
...
Рейтинг: 0 / 0
Нумеровка страниц в схеме xsl
    #36770123
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АльтаирСтранно, заработало, только если написать так:
<xsl:variable name="str_" select="ФИО"/>
Принципиальная ошибка. Вы переменной str_ присваиваете значение УЗЛА ФИО. Если же Вам нужно присвоить строковое значение, то нужно писать так
Код: plaintext
<xsl:variable name="str_" select="'ФИО'"/>
(обратите внимания на дополнительные апострофы) и тогда все будет работать
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Нумеровка страниц в схеме xsl
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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