Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Parallel data traversal

Reply
Thread Tools

Parallel data traversal

 
 
Vojta
Guest
Posts: n/a
 
      09-10-2007
Hi,

I have some xml data looking like this
<root>
<items1>
<i1>..</i1>
<i1>..</i1>
</items1>
<items2>
<i2>..</i2>
<i2>..</i2>
</items2>
</root>

If my context node is the k-th node in items1 is to possible to create
XPath that finds a k-th node in items2? Something like "../../
items2[position() = position(.)]" - which does not work because "." is
bound to some "i2" node inside the square brackets.

Some motivation: we use a "repeater" component that traverses child
nodes of one node. The current node in the repeater is the context
node. The user then uses xpaths relative to the current node to get
the data. And I need some hack to be able to reference nodes at the
same position but inside a different node.

Obviously the most natural solution is to do some data preprocessing
to "zip" items1 and items2 together or modify our repeater to be able
to have multiple context nodes. But isn't there any pure xpath way to
do this?

Thanks

 
Reply With Quote
 
 
 
 
Pavel Lepin
Guest
Posts: n/a
 
      09-10-2007

Vojta <(E-Mail Removed)> wrote in
<(E-Mail Removed) .com>:
> <root>
> <items1>
> <i1>..</i1>
> <i1>..</i1>
> </items1>
> <items2>
> <i2>..</i2>
> <i2>..</i2>
> </items2>
> </root>
>
> If my context node is the k-th node in items1 is to
> possible to create XPath that finds a k-th node in items2?
> Something like "../../ items2[position() = position(.)]" -
> which does not work because "." is bound to some "i2" node
> inside the square brackets.
>
> Obviously the most natural solution is to do some data
> preprocessing to "zip" items1 and items2 together or
> modify our repeater to be able to have multiple context
> nodes.


That is the most natural solution indeed. And it's a trivial
transformation, too.

> But isn't there any pure xpath way to do this?


Short answer: no, there isn't any pure XPath way of doing
that. You need either variables (that is, you have to
generate the XPath expression on the fly, it cannot be
static), or XPath extensions (XSLT defines the current()
function which returns the current node; but the notion of
the current node is defined by XSLT spec as well, and isn't
by itself meaningful outside of XSLT context).

--
This chickenus crossed the roadus while yodelingus.
 
Reply With Quote
 
 
 
 
David Carlisle
Guest
Posts: n/a
 
      09-10-2007
Vojta wrote:
> Hi,
>
> I have some xml data looking like this
> <root>
> <items1>
> <i1>..</i1>
> <i1>..</i1>
> </items1>
> <items2>
> <i2>..</i2>
> <i2>..</i2>
> </items2>
> </root>
>
> If my context node is the k-th node in items1 is to possible to create
> XPath that finds a k-th node in items2? Something like "../../
> items2[position() = position(.)]" - which does not work because "." is
> bound to some "i2" node inside the square brackets.
>
> Some motivation: we use a "repeater" component that traverses child
> nodes of one node. The current node in the repeater is the context
> node. The user then uses xpaths relative to the current node to get
> the data. And I need some hack to be able to reference nodes at the
> same position but inside a different node.
>
> Obviously the most natural solution is to do some data preprocessing
> to "zip" items1 and items2 together or modify our repeater to be able
> to have multiple context nodes. But isn't there any pure xpath way to
> do this?
>
> Thanks
>


not pure xpath1 you need xslt1 or a similar host language that can bind
xpath variables.

however in xpath2 you can express this, for example

for $p in 1+count(preceding-sibling::i1) return
.../preceding-sibling::items2/i2[$p]

David
--
http://dpcarlisle.blogspot.com
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: Parallel in, Parallel out shift register Vivek Menon VHDL 0 06-10-2011 10:15 PM
Parallel in, Parallel out shift register Vivek Menon VHDL 5 06-08-2011 03:56 PM
Parallel port control with USB->Parallel converter Soren Python 4 02-14-2008 03:18 PM
NAT traversal with 837 between 2 ethernets. AM Cisco 2 04-12-2005 06:59 PM
nat traversal or something else cci admin Cisco 5 04-22-2004 06:32 AM



Advertisments