RE: [xsl] SAXON: Generate 10 elements per page

Subject: RE: [xsl] SAXON: Generate 10 elements per page
From: "SHEIKH Sajjad" <Sajjad.SHEIKH@xxxxxxxxxxx>
Date: Mon, 16 Feb 2004 12:32:23 +0100
Now I am trying to sort all records (as following).  It works only for
first 10 records while I am expecting that it sorts all the records
first and then start splitting the documents page by page.

Do I need to write a stylesheet for sorting all the records first and
generate a new xml doc and then apply the 2nd sheet to generate pages or
can I do it in the same sheet as well?

Any suggestions?
Regards,

<xsl:for-each select="Row[position() mod 10 = 1]"> 
	<xsl:sort select="field1"/>
		<saxon:output href="page{position()}.html"> 
		<html> 
			<body>  
		<xsl:for-each
		select=".|following-sibling::Row[position() &lt; 10]">
			<xsl:sort select="field1"/>



-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx] 
Sent: 16 February 2004 11:15
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] SAXON: Generate 10 elements per page



	<xsl:variable name="value1">
		<xsl:value-of select="field1"/>
	</xsl:variable>

why do people keep doing that?
It is a lot of typing and causes the processor to be quite inefficient,
building up a result tree fragment.

You should always just do


	<xsl:variable name="value1" select="field1"/>

Unless you actually intend to creste a result tree fragment.

Although in your case you don't need a variable at all as it would be
just as easy to use field1 rather than $value in your test expression.



> While I am expecting that it will
> produce one page with 9 elements!

As always in xslt, it's better just to select the elements you want
rather than selecting everything and then throwing something out. Your
testing of position() and grouping into 10 is done here:

<xsl:for-each select="Row[position() mod 10 = 1]">

which is way before you have looked at your field1 element.

In English your requirement is to select all Rows that don't have a
field1 of N/A, and group those rows into 10s, so that is

<xsl:for-each select="Row[field1 != 'N/A'][position() mod 10 = 1]">


David

-- 
http://www.dcarlisle.demon.co.uk/matthew

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


______________________________________________________________
This message has been scanned for all viruses by BTnet VirusScreen. The
service is delivered in partnership with MessageLabs.

This service does not scan any password protected or encrypted
attachments.  

If you are interested in finding out more about the service, please
visit our website at
http://www.btignite.com/internetservices/btnet/products_virusscreen.htm
==============================================================

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread