xsl-list
[Top] [All Lists]

Re: [xsl] XPath selecting chain of following siblings of the same name

2007-03-10 12:46:42
At 2007-03-10 17:13 +0530, Mukul Gandhi wrote:
I wonder, why this XSLT 1.0 solution doesn't work:

From what I can tell it is because you only look at the "next" a and not all contiguous a elements that follow:

    <xsl:apply-templates select="following-sibling::*[1][self::a]" />

Did you mean to do what is in the code below?  This appears to work just fine.

I hope this helps.

. . . . . . . . . Ken

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:output method="xml" indent="yes"/>

<!--identity transform for all nodes other than 'a'-->
<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

<!--the first a-->
<xsl:template match="a[not(preceding-sibling::*[1][self::a])]">
  <a-block>
    <xsl:apply-templates select="." mode="nested"/>
  </a-block>
</xsl:template>

<!--other a's when nested-->
<xsl:template match="a" mode="nested">
  <xsl:copy-of select="."/>
  <xsl:apply-templates select="following-sibling::*[1][self::a]"
                       mode="nested"/>
</xsl:template>

<!--other a's when not nested can be ignored-->
<xsl:template match="a"/>

</xsl:stylesheet>


--
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds:     publicly-available developer resources and training
G. Ken Holman                 mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Cancer Awareness Aug'05  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--