[no subject]

	<xsl:if test="p[@class='box']">

from the outside and just have a single for-each-group so that you only
get each output element once.

	<xsl:for-each-group select="*"
	group-adjacent="string(self::p/@class)"

Now your elements are grouped and inside there you can have a -single_ xsl:choose
deciding what to surround the group with

	<xsl:choose>
				<xsl:when
test="self::p/@class[contains(.,'box')]">
	<box type="box"
page="{replace(preceding-sibling::p[@class='pageNumber'][1],'Page ','')}">
						<xsl:apply-templates
select="current-group()"/>
	</box>
				</xsl:when>
	<xsl:when
test="self::p/@class[contains(.,'exercise')]">
					<exercise>
						<xsl:apply-templates
select="current-group()"/>
					</exercise>
				</xsl:when>
	<xsl:otherwise>
					<xsl:apply-templates
select="current-group()"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:for-each-group>


David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread