This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Selecting node sets for page by page output - without usingfor-each or mutiple ifs
- To: <xsl-list at mulberrytech dot com>
- Subject: Selecting node sets for page by page output - without usingfor-each or mutiple ifs
- From: Aaron Miller <amiller at zatso dot com>
- Date: Tue, 29 Aug 2000 12:09:28 -0700
- Reply-To: xsl-list at mulberrytech dot com
Hello all,
I am stumped on this one. I have an XML Doc like this:
<?xml version="1.0" ?>
<root>
<user>
<user_name>username</user_name>
<greet_name>username</greet_name>
<station id="1">
<pseudonym>pseudonym</pseudonym>
<id>5</id>
</station>
</user>
<params>
</params>
<clickCastProgram>
<topicStoryContainerList>
<topicStoryContainer>
<topic>
<name>Top Stories</name>
<id>6</id>
</topic>
<storyList>
<story>
<id>999</id>
<name>story 999 name</name>
<description>story 999 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>998</id>
<name>story 998 name</name>
<description>story 998 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>997</id>
<name>story 997 name</name>
<description>story 997 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>996</id>
<name>story 996 name</name>
<description>story 996 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
</storyList>
</topicStoryContainer>
<topicStoryContainer>
<topic>
<name>topic name 2</name>
<id>7</id>
</topic>
<storyList>
<story>
<id>889</id>
<name>story 889 name</name>
<description>story 889 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>888</id>
<name>story 888 name</name>
<description>story 888 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>887</id>
<name>story 887 name</name>
<description>story 887 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
<story>
<id>886</id>
<name>story 886 name</name>
<description>story 886 description</description>
<activation_date>08/10/2000</activation_date>
<video>
<activation_date>08/10/2000</activation_date>
<graphic name="small">
<external_reference>http://www.zatso.com/image_url.gif</external_reference>
</graphic>
<length>100</length>
<station>
<pseudonym>Pseudonym</pseudonym>
</station>
</video>
<enhancementList></enhancementList>
</story>
</storyList>
</topicStoryContainer>
</topicStoryContainerList>
</clickCastProgram>
</root>
As you can see, each topicStoryContainer has a topic and a storyList, and
all the topicStoryContainers make up a topicStoryContainerList. I want to
write an XSLT that grabs five nodes per page, based on startRange and
endRange parameters, and creates appropriate navigation for previous and
next pages.
**So my question is this**: how do I grab five <story>s per page, in
sequence, with topic headings inserted in the appropriate places, _without_
using <xsl:for-each> or <xsl:if>?
I've tried using the position() function to determine ranges of things, but
since this is contextual, the topic elements seem to reset it for each
storyList.
Is this even possible? I am curious since I have been told it's much more
efficient and desirable to use <xsl:apply-templates> and "modes" rather than
using a lot of explicit logical branching for this sort of thing.
Thanks,
aaron
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list