> Am 13.11.2015 um 15:54 schrieb Rick Quatro rick@xxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>:
>
> As I am processing a for-each-group, I want to check some of the elements
> within the group that are before or after the current node. I can use
> preceding-sibling and following-sibling axes, but it doesn't seem like
these
> are restricted to the current-group. Is there a good way to query what is
> before or after the current node of a group, while insuring that the query
> stays within the group? Thanks. -Rick
Hi Rick,
I would understand your requirement in a way that might be solved by using
something like this:
preceding-sibling::*[. = current-group()]
following-sibling::*[. = current-group()]
I.e. limit the result of your lookup along the preceding-sibling and
following-sibling axes to the current group.
- Michael
>
> XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <root>
> <first>First</first>
> <second>Second</second>
> <one>Number one</one>
> <two>Number two</two>
> <three>Number three</three>
> <four>Number four</four>
> <five>Number five</five>
> <one>Number one2</one>
> <two>Number two2</two>
> <four>Number four2</four>
> <five>Number five2</five>
> </root>
>
> XSLT:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> exclude-result-prefixes="xs"
> version="2.0">
>
> <xsl:output indent="yes"/>
>
> <xsl:template match="/">
> <xsl:apply-templates select="root"/>
> </xsl:template>
>
> <xsl:template match="root">
> <xsl:for-each-group select="*" group-starting-with="one">
> <xsl:call-template name="precGroup">
> <xsl:with-param name="precGroup" select="current-group()"/>
> </xsl:call-template>
> </xsl:for-each-group>
> </xsl:template>
>
> <xsl:template name="precGroup">
> <xsl:param name="precGroup"/>
> <xsl:for-each select="$precGroup">
> <xsl:message select="."/>
> </xsl:for-each>
> </xsl:template>
>
> <xsl:template match="*">
> <xsl:copy-of select="."/>
> </xsl:template>
> </xsl:stylesheet>
|