This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Making groups of N elements --> Photo index
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Wed, 12 Jun 2002 23:11:30 +0100
- Subject: RE: [xsl] Making groups of N elements --> Photo index
- Reply-to: xsl-list at lists dot mulberrytech dot com
> Thank you for your advice about the result tree fragments. I
> found that
> feature very useful.
>
> What is xx:node-set() ? Is it something portable?
It's an extension function that's available in nearly every XSLT
processor, though the namespace varies which makes it non-portable.
Several processors support the EXSLT namespace (see www.exslt.org) which
improves the situation.
>
> I did it _without_ that function, as follows (comments welcome).
>
> <xsl:variable name="allphotos"> <xsl:apply-templates
> select="/fotos/foto" mode="identity"> <xsl:sort
> order="ascending" select="@id" data-type="number" />
> </xsl:apply-templates> <foto id="100000000000" dummy="logo"
> src="logo.gif" href="http://homepage" /> <foto
> id="100000000001" dummy="yes" /> <foto id="100000000002"
> dummy="yes" /> <foto id="100000000003" dummy="yes" /> <foto
> id="100000000004" dummy="yes" /> <foto id="100000000005"
> dummy="yes" /> <foto id="100000000006" dummy="yes" /> <foto
> id="100000000007" dummy="yes" /> </xsl:variable>
>
> <xsl:for-each select="$allphotos/foto[(position() mod 8) =
> 1 and not(@dummy='yes')]">
Then you're using a processor that implements the "implicit conversion
of result tree fragments to node-sets" offered by the XSLT 1.1 and XSLT
2.0 working drafts: this code isn't legal in XSLT 1.0. Which processor,
might I ask?
(Saxon allows this, provided your stylesheet specifies version="1.1" or
later. But some earlier versions of Saxon allowed it regardless).
Michael Kay
Software AG
home: Michael.H.Kay@ntlworld.com
work: Michael.Kay@softwareag.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list