Subject: [xsl] two at a time, using a sequence expression From: "John Cavalieri" <john.cavalieri@xxxxxxxxx> Date: Thu, 5 Jun 2008 11:13:22 -0500 |
Hi XSLers, I'm curious if there is a more elegant way to use a sequence expression to process two adjacent elements at a time. With XSLT 1.0 I would have used recursion, but with XSLT/XPath 2.0 I'm wondering if I can exploit sequences. Below is something I've come up with so far. An interesting side note, I thought the sequence expression would error because of divide by zero, but it appears to be side effect free, at least with Saxon. INPUT <?xml version="1.0" encoding="UTF-8"?> <pairs> <Abbott /> <Costello /> <Amos /> <Andy /> <George /> <Gracie /> <Einstein /> </pairs> XSLT <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output indent="yes" /> <xsl:template match="/pairs"> <xsl:copy> <xsl:for-each select="for $i in 1 to (count(*) idiv 2 + (count(*) mod 2)) return *[($i*2)-1]"> <pair> <xsl:copy-of select="." /> <xsl:copy-of select="./following-sibling::*[1]" /> </pair> </xsl:for-each> </xsl:copy> </xsl:template> </xsl:stylesheet> -- John Cavalieri john.cavalieri@xxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xsl:include - multiple in, Andrew Welch | Thread | Re: [xsl] two at a time, using a se, Martin Honnen |
[xsl] XPath Against OpenXML and Ope, Ronnie Royston | Date | Re: [xsl] two at a time, using a se, Martin Honnen |
Month |