xsl-list
[Top] [All Lists]

RE: SAXON: Generate 10 elements per page

2004-02-16 06:28:08
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() &lt; 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