[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: What is the most efficient XPath expression for r

Subject: Re: What is the most efficient XPath expression for retrieving the first child element?
From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 12 May 2019 17:27:59 -0000
Re:  What is the most efficient XPath expression for  r
> (b) child::Total_Size

This is O(N) because all children will be examined -- and more than one
Total_Size elements may be selected.
So, this expression is wrong.

If we want to select the first child element named Total_Size, here is a
correct expression:

Total_Size[1]

The one that in theory should be more efficient than the above, is:

*[1]

Why is this more efficient? Because there is no need to get the element's
name and compare it to "Total_Size". We just select the first child
**regardless** of its name, and spend the few saved nanoseconds smiling :)

Note also that we can omit the child:: axis altogether, because it is the
"default axis" -- as per the W3C XPath 1.0 Spec:
https://www.w3.org/TR/1999/REC-xpath-19991116/#path-abbrev. So a few more
nanoseconds saved -- this time in reading and parsing.


Cheers,
Dimitre

On Sun, May 12, 2019 at 4:43 AM Costello, Roger L. costello@xxxxxxxxx <
xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Hello XSLT experts!
>
> I want to retrieve the first child element. The children consist of a
> <Total_Size> element followed by many <String> elements (perhaps thousands
> of <String> elements).
>
> <COFF_String_Table>
>     <Total_Size>4443</Total_Size>
>     <String>.eh_frame</String>
>     <String>.debug_aranges</String>
>     <String>.debug_info</String>
>     ...
> </COFF_String_Table>
>
> Question: What is the most efficient XPath for selecting the first child
> element (the <Total_Size> element)? Assume the context node is the
> <COFF_String_Table> element. Which of these is the most efficient XPath
> expression:
>
> (a) child::*[1]
> (b) child::Total_Size
> (c) something else (what?)
>
> /Roger

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.