помогите сделать вот такой пример через XSLT
От: hooper11  
Дата: 12.04.05 07:21
Оценка:
вот задание 2) Необходимо вывести постраничный список авторов, отсортированных по количеству написанных книг.
Под именем автора должен быть список книг, в написании которых учавствовал текущий автор.
На странице может быть не более 6 книг.
Книга, которая не попала на текущую страницу должна перейти на следующую страницу вместе с именем автора.
Авторы, которые не учавствовали в написании книг, присутствовать в списке не должны.
Количество книг на странице нужно вынести в глобальную переменную.

Например:

PAGE 1

author 1
***********************
book 1
book 4
book 7
book 9
book 10
***********************

author 3
***********************
book 1
***********************

PAGE 2

author 3
***********************
book 2
book 6
book 8
book 9
***********************

author 6
***********************
book 1
book 6

PAGE 3

author 6
***********************
book 9
book 10
***********************

author 2
***********************
book 2
book 10
***********************

author 5
***********************
book 3
book 8
***********************

PAGE 4

author 9
***********************
book 4
book 5
***********************

author 4
***********************
book 7
***********************

author 7
***********************
book 5
***********************

author 8
***********************
book 3
***********************


вот xml файл
<?xml-stylesheet type="text/xsl" href="D:\vano\qqq\xml_done\books1.xsl"?>
<root xmlns="http://www.epam.com/ROOTNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.epam.com/ROOTNS
root.xsd">
<books xmlns="http://www.epam.com/BOOKSNS">
<book id="b1">
<name>book 1</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a1"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a3"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a6"/>
</book>
<book id="b2">
<name>book 2</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a2"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a3"/>
</book>
<book id="b3">
<name>book 3</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a5"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a8"/>
</book>
<book id="b4">
<name>book 4</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a9"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a1"/>
</book>
<book id="b5">
<name>book 5</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a9"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a7"/>
</book>
<book id="b6">
<name>book 6</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a6"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a3"/>
</book>
<book id="b7">
<name>book 7</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a1"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a4"/>
</book>
<book id="b8">
<name>book 8</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a3"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a5"/>
</book>
<book id="b9">
<name>book 9</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a1"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a3"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a6"/>
</book>
<book id="b10">
<name>book 10</name>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a1"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a2"/>
<author_reference xmlns="http://www.epam.com/AUTHORSNS" author_id="a6"/>
</book>
</books>
<authors xmlns="http://www.epam.com/AUTHORSNS">
<author id="a1">
<name>author 1</name>
</author>
<author id="a2">
<name>author 2</name>
</author>
<author id="a3">
<name>author 3</name>
</author>
<author id="a4">
<name>author 4</name>
</author>
<author id="a5">
<name>author 5</name>
</author>
<author id="a6">
<name>author 6</name>
</author>
<author id="a7">
<name>author 7</name>
</author>
<author id="a8">
<name>author 8</name>
</author>
<author id="a9">
<name>author 9</name>
</author>
<author id="a10">
<name>author 10</name>
</author>
</authors>
</root>


вот что я наваял не могу сделать счетчик чтобы выводилось как в примере

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:root="http://www.epam.com/ROOTNS" xmlns:books="http://www.epam.com/BOOKSNS" xmlns:authors="http://www.epam.com/AUTHORSNS" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:template match="root:root">
<xsl:apply-templates select="authors:authors"/>
</xsl:template>
<xsl:template match="authors:authors">
<xsl:apply-templates select="authors:author">
<xsl:sort order="descending" select="count (//books:books/books:book [authors:author_reference/@author_id = current ()/@id])"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="authors:author">
<xsl:if test="//books:books/books:book [authors:author_reference/@author_id = current ()/@id]">
<h1>
<xsl:value-of select="authors:name"/>
</h1>
<xsl:apply-templates select="//books:books/books:book [authors:author_reference/@author_id = current ()/@id]"/>
</xsl:if>
</xsl:template>
<xsl:template match="books:book">
<xsl:value-of select="books:name"/>
<br/>
</xsl:template>
</xsl:stylesheet>

Очень нужно плз
Re: помогите сделать вот такой пример через XSLT
От: V.Petrovski Беларусь  
Дата: 12.04.05 09:27
Оценка:
Здравствуйте, hooper11, Вы писали:

H>Очень нужно плз

Это понятно что нжно чтобы в epam на работу взяли

Ты скажи по какому алгоритму нужно бить записи на страницы?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[2]: помогите сделать вот такой пример через XSLT
От: hooper11  
Дата: 12.04.05 09:40
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

VP>Здравствуйте, hooper11, Вы писали:


H>>Очень нужно плз

VP>Это понятно что нжно чтобы в epam на работу взяли

VP>Ты скажи по какому алгоритму нужно бить записи на страницы?



нужно чтобы по 6 книг выводилось на страницу например
page 1

автор1
book1
book2
book3

автор2
book3
book4
book7

page2

автор2
book9

и т.д.
Re[3]: помогите сделать вот такой пример через XSLT
От: V.Petrovski Беларусь  
Дата: 12.04.05 10:38
Оценка:
Здравствуйте, hooper11, Вы писали:

VP>>Ты скажи по какому алгоритму нужно бить записи на страницы?


H>нужно чтобы по 6 книг выводилось на страницу например


Ну тогда тебе надо делать через вызов template с парамерами.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[4]: помогите сделать вот такой пример через XSLT
От: hooper11  
Дата: 12.04.05 14:16
Оценка:
Здравствуйте, V.Petrovski, Вы писали:

VP>Здравствуйте, hooper11, Вы писали:


VP>>>Ты скажи по какому алгоритму нужно бить записи на страницы?


H>>нужно чтобы по 6 книг выводилось на страницу например


VP>Ну тогда тебе надо делать через вызов template с парамерами.



а как сделать то, можно подсказать? плз
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.