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

Re: [xsl] preceding with the same ancestor as self


Subject: Re: [xsl] preceding with the same ancestor as self
From: "Rick Quatro rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Feb 2015 20:52:43 -0000

I think I have it:

preceding::fig[.!="" and ancestor::grp = current()/ancestor::grp][1]

-----Original Message-----
From: Rick Quatro rick@xxxxxxxxxxxxxx
[mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx] 
Sent: Friday, February 27, 2015 3:44 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] preceding with the same ancestor as self

Hi,

When I am at a <fig> with no text, I want to find the previous <fig> that
has text, but only within the same ancestor group.

I am using this:

preceding::fig[.!=""][1]

This works for all of the empty <fig> elements in the first <grp>, but in
the second <grp>, it incorrectly picks up the <fig> with the 4 value from
the previous <grp>. How can I restrict the preceding axis so a found node
will have the same ancestor as the context node? Thanks.

Rick


<?xml version="1.0" encoding="UTF-8"?>
<doc>
    <grp>
        <fig/>
        <fig>1</fig>
        <fig>2</fig>
        <fig/>
        <sub>
            <fig>3</fig>
        </sub>
        <fig/>
        <fig>4</fig>
    </grp>
    <grp>
        <fig/>
        <fig>1</fig>
        <fig>2</fig>
        <fig>3</fig>
        <sub>
            <fig/>
        </sub>
        <fig/>
    </grp>
</doc>


Current Thread