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

Re: [xsl] How to select an attribute on the current node or its anchestor


Subject: Re: [xsl] How to select an attribute on the current node or its anchestor
From: Philipp Kursawe <phil.kursawe@xxxxxxxxx>
Date: Fri, 15 Apr 2011 18:29:16 +0200

and I guess to fetch the text() of the current node or its ancestor I
would have to use:
ancestor-or-self::*[text/text()][1]/text()

This however does return an empty node for this xml:
<phrase id="goodbye">
    <text xml:lang="en">See you tomorrow!</text>

    <text weight="dayOfWeek"
          days="fri">
      <text xml:lang="en">Have a nice weekend!</text>
      <text id="weekend_summer"
            weight="month"
            months="4,5,6,7,8,9,10">
        <text alt="garden" icon="data:binary;..."/>
        <text alt="boat" icon="data:binary;..."/>
      </text>
    </text>
  </phrase>

and

ancestor-or-self::*[text/text()][1]/text does return the text node.
But I would like to select the text() in one select.

I tried
//*[@id='weekend_summer']/ancestor-or-self::*[text/text()][1]/text
which returns
<text xml:lang="en">Have a nice weekend!</text>

But i would like to fetch the text() node directly.

Thanks all for your help!
Phil
On Fri, Apr 15, 2011 at 8:33 AM, Brandon Ibach
<brandon.ibach@xxxxxxxxxxxxxxxxxxx> wrote:
> ancestor-or-self::*[@data][1]/@data
>
> -Brandon :)
>
>
> On Fri, Apr 15, 2011 at 2:06 AM, Philipp Kursawe <phil.kursawe@xxxxxxxxx>
wrote:
>> Hello,
>>
>> given the following xml:
>>
>> <node data="foo">
>> B  <text id="1" data="bar"/>
>> B  <text id="2"/>
>> </node>
>>
>> I would like to know the XPath expression to select @data which
>> results in "bar" for @id=1 and "foo" for @id=2.
>>
>> The general idea is to search for the attribute in the anchestor if
>> the current node does not contain the attribute all the way up to the
>> root node.
>>
>> Thanks for your help!
>>
>> Phil


Current Thread
Keywords