Re: [xsl] XPath for parent nodes, but excluding their children

Subject: Re: [xsl] XPath for parent nodes, but excluding their children
From: Michael Kay <mike@xxxxxxxxxxxx>
Date: Fri, 01 Jul 2011 00:25:07 +0100
There's a a lot of misunderstanding here.

When you use an expression like //div, XPath selects the div elements only, it does not select their children or other descendants. It returns to the caller, in effect, pointers to these div elements. What happens next is up to the caller. It's quite common for the caller to process (e.g. display or copy) the whole subtree rooted at a selected element. Such behaviour can't be controlled using the XPath expression, because the XPath engine doesn't determine what the client does with the selected nodes.

If you want to return to the client a node that doesn't have these children attached, you can't do this using XPath, because XPath can only select nodes as they exist in the input tree, it can't transform them into a different tree. That's XSLT territory.

Michael Kay
Saxonica

On 30/06/2011 22:23, Joel Dubien wrote:
Hello All,

I need some help with an XPath issue (this is for an xi:include in an XML doc, I am not using XLST to transform the XML, so I'm not sure if this is even possible). I want to retrieve all the parent nodes, but not any of the chilren nodes:

Example:
<root>
     <parent1>
         <child>
         </child>
     </parent1>
     <parent2>
         <child>
         <child>
     </parent2>
</root>

I want to get some xpath to grab just the parent nodes:

Xpath to retrieve:
<parent1/>
<parent2/>


Does anyone know how to do this with XPath w/o using XSLT to transform the xml?


TYIA!

-Joel

Current Thread