Subject:sequence to collect Author:Eugene Kirin Date:15 Jul 2005 01:02 PM
Hello to all!
I spent already a lot of time, but still cann't to resolve my task. Please help me.
I have a sequence:
<p>text</p>
<p>text</p>
<p>text</p>
<p>text<page>5</page></p>
<p>text</p>
<p>text</p>
<p>text</p>
<p>text</p>
<p>text<page>6</page></p>
<p>text</p>
<p>text</p>
<p>text</p>
I can't understand how to collect tags from <p>text<page>5</page></p> to <p>text<page>6</page></p> and other to throw away.
Subject:sequence to collect Author:(Deleted User) Date:15 Jul 2005 01:52 PM
Hi Eugene,
this is one solution:
let $start := //page[. = 5],
$end := //page[. = 6]
for $node in //p
where $node is $start/parent::node() or $node >> $start and $node << $end
return $node
In short, mark the start and the end of your range, then iterate over the paragraphs and return the one that are between them in document order ($node >> $start and $node << $end). Given that this would not return the <p> that is the parent of the start page (while you say you need that node too) I have added the test "$node is $start/parent::node()" in "or" with the previous one.