|
[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message] distance between elements and hierarchical orderSergio Andreozzi sergio.andreozzi at cnaf.infn.itFri Dec 9 03:16:56 PST 2005
Wolfgang Hoschek wrote:
> Both can probably be solved by walking the ancestor axis of the
> elements towards the root.
> For 2) find the nearest common ancestor, and add up the steps.
for problem 1. (compute the hierarchical level) I've this solution so
far. It uses the recursion to generate the list of ancestors, then count
them:
declare function local:ancestors-self($n as node()?) {
if (empty($n))
then ()
else (local:ancestors-self($n/..), $n)
};
declare function local:Hlevel($n as node()?) as xs:integer{
count( local:ancestors-self($n) )-1
}
ex:
<?xml version="1.0" encoding="UTF-8"?>
<S>
<A>
<B>
<F>4</F>
<C>
<D>3</D>
<E>5</E>
<G>
<H>3</H>
</G>
<G>
<H>2</H>
</G>
</C>
</B>
</A>
</S>
for $A in doc("test.xml")/S/A
return <Result>{ local:Hlevel(($A)[1]) }</Result>
<Result>2</Result>
for $A in doc("test.xml")/S/A
return <Result>{ local:Hlevel(($A/B)[1]) }</Result>
<Result>3</Result>
for $A in doc("test.xml")/S/A
return <Result>{ local:Hlevel(($A/B/C/G/H)[1]) }</Result>
<Result>6</Result>
still working on no.2.
Sergio
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






