[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] How to select immediate preceding-sibling value


Subject: Re: [xsl] How to select immediate preceding-sibling value
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 15 Nov 2005 12:24:57 GMT

		<xsl:for-each select="child::*">
you can just use select="*" child:: is implied.
			<xsl:if test="name()='PanelName'">

better to use test="self::'PanelName" rather than testing name()
				<xsl:value-of
select="current()/preceding-sibling::Process/@name"/>

you never need to start with current() as relative paths always start
from the current node. In this case you select the name attributes of
all preceding siblings but value-of (in xslt1) gives the string value of
just the first node in document order. If you just want to select the
nearest sibling use
select="preceding-sibling::Process[1]/@name"

But there is no need to for-each over all nodes and then have an xsl:if
test that just picks out the one you want, just for-each over your
PanelName elements:

I think you just want

		<xsl:for-each select="PanelName">
				<xsl:text>current node---	</xsl:text>
				<xsl:value-of select="@name"/>
				<xsl:text>Preceding sibling---</xsl:text>
				<xsl:value-of select="preceding-sibling::Process[1]/@name"/>
				<xsl:text>
				</xsl:text>
		</xsl:for-each>

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


Current Thread