Subject: Re: [xsl] XPath expression that returns the first 10 leaf element within the airport element? From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 22 Jul 2022 12:19:36 -0000 |
On 22.07.2022 13:51, Roger L Costello costello@xxxxxxxxx wrote:
My XML document has an <airport> element:
<airport> B B B B <a>blah</a> B B B <b> B B B B B B <c>blah</c> B B B </b> B B 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?
An easy to make mistake with positional predicates and // in your initial attempt but you corrected it well.
I sometimes tend to avoid the trap doing
B airport/descendant::*[not(*)][position() le 10]
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XPath expression that ret, Martin Honnen martin | Thread | Re: [xsl] XPath expression that ret, Michael Kay mike@xxx |
Re: [xsl] XPath expression that ret, Martin Honnen martin | Date | Re: [xsl] XPath expression that ret, Michael Kay mike@xxx |
Month |