Subject: Re: [xsl] XPath expression that returns the first 10 leaf element within the airport element? From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 22 Jul 2022 14:12:03 -0000 |
It's not a basic question but it is one that is usually asked only by beginners: most people fall into this trap once, and then steer clear of it in future. The operator `[]` has higher precedence than `/`, so $a/b[1] finds the first b child of every element selected by $a. Michael Kay Saxonica > On 22 Jul 2022, at 12:51, Roger L Costello costello@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Hi Folks, > > I have an embarrassingly basic question. > > My XML document has an <airport> element: > > <airport> > <a>blah</a> > <b> > <c>blah</c> > </b> > ... > </airport> > > I want the first 10 leaf elements within the <airport> element (<a>, <c>, ...). > > I thought this XPath would do the job: > > <xsl:for-each select="airport//*[not(child::*)][position() le 10]"> > > But that XPath does not return the first 10 leaf elements. It returns over nine thousand elements! > > What is that XPath expression saying? Clearly it is saying something different than I thought it was saying. > > I think I found the correct XPath expression: > > <xsl:for-each select="(airport//*[not(child::*)])[position() le 10]"> > > Do you agree that that XPath expression will select the first 10 leaf elements within the <aircraft> element? > > /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath expression that ret, Martin Honnen martin | Thread | Re: [xsl] XPath expression that ret, Dimitre Novatchev dn |
Re: [xsl] XPath expression that ret, Martin Honnen martin | Date | Re: [xsl] XPath expression that ret, Dimitre Novatchev dn |
Month |