Re: [xsl] Find First Descendants That Match Predicate?

Subject: Re: [xsl] Find First Descendants That Match Predicate?
From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 24 Dec 2018 22:33:34 -0000
Thanks--setting the $here variable was the trick I was failing to see.



Eliot Kimber

o;?On 12/24/18, 3:31 PM, "David Carlisle d.p.carlisle@xxxxxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:



    (I moved /chapter to the end?)


    <xsl:stylesheet version="3.0"

     <xsl:template match="chapter">

     <xsl:message select="
    let $here:=. return
    .//section[empty(ancestor::*[title] except



    the xpath in the message produces



    On Mon, 24 Dec 2018 at 21:13, Graydon graydon@xxxxxxxxx
    <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
    > On Mon, Dec 24, 2018 at 08:57:40PM -0000, Eliot Kimber
ekimber@xxxxxxxxxxxx scripsit:
    > > Using XPath 3:
    > [snip]
    > > Given a starting node, e.g., the root node (but could be any node in
the hierarchy) I need to find the first titled "child" nodes, so given the
chapter node  I need to find S1 and S2 but not S3.
    > If you meant:
    > <root>
    >     <chapter><title>C1</title>
    >     <wrapper>
    >         <wrapper>
    >             <section><title>S1</title>
    >             </section>
    >         </wrapper>
    >         <section><title>S2</title>
    >             <section><title>S3</title>
    >             </section>
    >         </section>
    >     </wrapper>
    >     </chapter>
    > </root>
    > then
    > will give you the first titled element of the type you're looking for.
    > You'll need to put the actual values for "foo" and "bar" in where
there's a predicate for [self::section]; [self:foo or self::bar]
    > -- Graydon

Current Thread