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

Re: [xsl] parent -child


Subject: Re: [xsl] parent -child
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Thu, 19 Jul 2001 18:02:51 +0100

Hi Srikanth,

> How do i read the value of the child element and print the value of
> the parent element
>
> xml:
> <a>1
> <b>2
> <c>3</c>
> <d>4</d>
> </b>
> </a>
>
> I need to check  for the value of [c=3] and print 2

The simple answer would be to get the value of (using xsl:value-of)
the b element whose child c element is equal to 3:

  <xsl:value-of select="b[c = 3]" />

However, the b element holds mixed content. In a tree it would look
like (&#xA; indicates line breaks):

+- (element) b
   +- (text) 2&#xA;
   +- (element) c
   |  +- (text) 3
   +- (text) &#xA;
   +- (element) d
   |  +- (text) 4
   +- (text) &#xA;

So you want the normalized version of the (first) text node child of
the b element whose child c element is equal to 3:

  <xsl:value-of select="normalize-space(b[c = 3]/text())" />

You can drop the normalize-space() if you don't care about the line
break being output.
  
Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread