This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Conditional Selection of Nodes
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: Re: [xsl] Conditional Selection of Nodes
- From: "Kyle D. Morton" <kyle_morton at hotmail dot com>
- Date: Wed, 9 May 2001 21:03:00 -0400
- References: <NEBBIEMMKMAEPLDEIMPEIEGMCIAA.ciaran.byrne@3tl.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
This sort of does it...It breaks down if child element names are repeated
out of sequence.
<xsl:template match="/">
<foo>
<xsl:variable name="nodeList" select="foo/child::*" />
<xsl:for-each select="$nodeList">
<xsl:variable name="curPos" select="position()" />
<xsl:variable name="curName" select="name()" />
<xsl:variable name="nextName" select="name(following-sibling::*)" />
<xsl:if test="$curName!=$nextName">
<xsl:if test="$curName!='p'">
<p>
<xsl:for-each select="$nodeList[name()=$curName and
$curPos>=position()]">
<xsl:copy>
<xsl:value-of select="text()"/>
</xsl:copy>
</xsl:for-each>
</p>
</xsl:if>
<xsl:if test="$curName='p'">
<xsl:copy>
<xsl:value-of select="text()"/>
</xsl:copy>
</xsl:if>
</xsl:if>
</xsl:for-each>
</foo>
</xsl:template>
----- Original Message -----
From: Ciaran Byrne <ciaran.byrne@3tl.com>
To: Xsl-List <xsl-list@lists.mulberrytech.com>
Sent: Wednesday, May 09, 2001 4:41 PM
Subject: [xsl] Conditional Selection of Nodes
> Hi all,
> The following question has been teasing me lately
> and I was hoping someone has an answer.
>
> I have the following XML ...
>
> <foo>
> <b>content</b>
> <b>more content</b>
> <p>yet more content</p>
> <i>some more conent</i>
> </foo>
>
>
> and what I want is to put all child elements of 'foo' that
> are not in 'p' elements into a 'p' element, in order.
>
> <foo>
> <p>
> <b>content</b>
> <b>more content</b>
> </p>
> <p>yet more content</p>
> <p>some more content</p>
> </foo>
>
> The key issue is to avoid putting 'p' elements around every sibling i.e.
>
> <foo>
> <p>
> <b>content</b>
> </p>
> <p>
> <b>more content</b>
> </p>
> etc.
> </foo>
>
> I've tried a few approaches yet no joy ;o( Any help is appreciated
>
> Ciaran.
>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list