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

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

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

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

Andry Trushin
Всё получилось с помощью условия.
А страницу вывожу так:
Код: plaintext
1.
<td>Стр.</td>
<td><xsl:value-of select="position()+1"/></td>
...
Рейтинг: 0 / 0
13.07.2010, 11:52
    #36737745
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Что-то я совсем запуталась с этими страницами, начнём сначала. Есть х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
13.07.2010, 12:24
    #36737875
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
А номер страницы вывожу так:
Код: plaintext
1.
 <xsl:variable  name="page" select="2"/>
             <xsl:value-of select="$page"/>
...
Рейтинг: 0 / 0
13.07.2010, 13:27
    #36738161
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
АльтаирА номер страницы вывожу так:
Код: plaintext
1.
 <xsl:variable  name="page" select="2"/>
             <xsl:value-of select="$page"/>

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

<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
14.07.2010, 00:47
    #36739615
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме 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.
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
14.07.2010, 01:17
    #36739646
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
И правильно. Вам нужно <xsl:value-of> вынести из CDATA
...
Рейтинг: 0 / 0
14.07.2010, 01:18
    #36739647
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
_Vasilisk_И правильно. Вам нужно <xsl:value-of> вынести из CDATAИ из <xsl:text>
...
Рейтинг: 0 / 0
14.07.2010, 09:54
    #36739873
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Вынесла из <xsl:text> - номер страницы прибавился только один раз
...
Рейтинг: 0 / 0
15.07.2010, 13:37
    #36743048
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
как написать правильно что-то типа этого:
<xsl:value-of select="$page=$page+1"/>
...
Рейтинг: 0 / 0
15.07.2010, 17:28
    #36743798
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Альтаир,

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

Код: 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
15.07.2010, 18:08
    #36743889
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Альтаир,

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

Код: 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
15.07.2010, 18:10
    #36743893
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
знак < в предидущем коде заменить на &lt;
...
Рейтинг: 0 / 0
15.07.2010, 18:21
    #36743910
Andry Trushin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
ну и в имени второго параметра я ошибся. но суть рекурсии понятна. еще вероятно правильно вывод строки в проверку поместить, чтобы можно было не думая в totalRow запихнуть 0.
...
Рейтинг: 0 / 0
15.07.2010, 20:29
    #36744045
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Всё получилось! Спасибо :)
...
Рейтинг: 0 / 0
16.07.2010, 14:13
    #36745147
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Скажите, пожалуйста, а как сделать:
<xsl:if test="$str1 = $str2">
если $str1 и $str2 - строки. Знак равно почему-то не работает в этом случае.
...
Рейтинг: 0 / 0
16.07.2010, 16:16
    #36745517
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нумеровка страниц в схеме xsl
Странно, заработало, только если написать так:
<xsl:variable name="str_" select="ФИО"/>
<xsl:variable name="str2" select="string($str)"/>

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

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

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


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