[xsl] XPath expression that returns the first 10 leaf element within the airport element?

Subject: [xsl] XPath expression that returns the first 10 leaf element within the airport element?
From: "Roger L Costello costello@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 22 Jul 2022 11:51:33 -0000
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