This will need two phases of transformation, but you don't need two
stylesheets, you can write the intermediate results to a temporary tree.
The questions you are asking are not specific to Saxon: they are basic
XSLT coding questions. Could I ask you please to use the xsl-list at
mulberrytech for such questions - thanks.
Michael Kay
-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
SHEIKH Sajjad
Sent: 16 February 2004 11:32
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] SAXON: Generate 10 elements per page
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() < 10]">
<xsl:sort select="field1"/>
-----Original Message-----
From: David Carlisle [mailto:davidc(_at_)nag(_dot_)co(_dot_)uk]
Sent: 16 February 2004 11:15
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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_viruss
creen.htm
==============================================================
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list