[xquery-talk] Getting node position in a for statement
Vallone, Philip Mr CTR USA AMC
Philip.Vallone at us.army.mil
Mon Jun 16 10:36:58 PDT 2008
Thank you David,
The question is different. Forgive me as I am learning :).
I want to return the position of <tr> within its parent.
E.g.
<row xpath="root/table/tbody/tr" position="1" cellcount="1">Table 1 -
Index</row>
<row xpath="root/table/tbody/tr" position="2" cellcount="1">Table 1 -
Index</row>
<!-- New table started -->
<row xpath="root/table/tbody/tr" position="1" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="2" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="3" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="4" cellcount="2">Table 2 -
Dictionary</row>
The expression you recommended returns a the sequence of nodes in the
entire document.
<row xpath="root/table/tbody/tr" position="1" cellcount="1">Table 1 -
Index</row>
<row xpath="root/table/tbody/tr" position="2" cellcount="1">Table 1 -
Index</row>
<row xpath="root/table/tbody/tr" position="3" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="4" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="5" cellcount="2">Table 2 -
Dictionary</row>
<row xpath="root/table/tbody/tr" position="6" cellcount="2">Table 2 -
Dictionary</row>
....
Sorry for not being clear.
Thanks for the help,
Phil
-----Original Message-----
From: David Carlisle [mailto:davidc at nag.co.uk]
Sent: Monday, June 16, 2008 9:17 AM
To: Vallone, Philip Mr CTR USA AMC
Cc: talk at x-query.com
Subject: Re: [xquery-talk] Getting node position in a for statement
in
let $pos := $rows/position()
$rows is (at each iteration) a single tr element so $rows/position()
will always be 1.
You want to use an "at" clause as in the for expression:
for $rows at $p in //table/tbody/tr
let $cells := count($rows/th)
let $title := $rows/ancestor::table/title...
return
<row position="{$p} cellcount="{$cells}" >{data($title)}</row>
or use an xpath rather than a for expression (so that position()
reflects the position in the sequence)
//table/tbody/tr/<row position="{position()} cellcount="{count(th)}">
{ancestor::table/title/data(.)}</row>
(This seems to be the same question, and same answer as last week
though?)
David
________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________
More information about the talk
mailing list