Go Back   Velocity Reviews > Newsgroups > XML
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

XML - XPATH help with Expression

 
Thread Tools Search this Thread
Old 06-27-2003, 02:17 AM   #1
Default XPATH help with Expression


Hi -

I am stuck on what might be a simple Xpath expression, I just can't
visualize the query.

I have a node set that can be the child of any of three nodes. I would
like to test if a node matching [@url = $this-page] has the child
<related_info type="x" />.

Here's my XML
<?xml?>
<root>
<silo>
<level_one url="w123">
<related_info type="x"/>
</level_one>
<level_two>
<nav_item url="w234">
<related_info type="x"/>
</nav_item>
<nav_item url="x234">
<related_info type="x"/>
</nav_item>
</level_two>
<level_three>
<nav_item url="w23w">
<related_info type="x"/>
</nav_item>
<nav_item url="x2ww">
<related_info type="x"/>
</nav_item>
</level_three>
</silo>
....
</root>

I need to do two things.

1. See if the related info section exists, so I can adjust widths and
the like.
2. Call a named template to operate on the related_info data.

I'm almost at the point of creating a separate (flatter) XML for the
related_info and be done with it.

Let me know what you think.


Jerry


Jerry O
  Reply With Quote
Old 06-27-2003, 07:58 AM   #2
Dimitre Novatchev
 
Posts: n/a
Default Re: XPATH help with Expression

Use:

/*/*/*[@url = $this-page and related_info[@type=''x'] ]



I'd recommend that you get the XPath Visualizer and play with it to learn
XPath the fun way.
=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL



"Jerry O" <> wrote in message
news: m...
> Hi -
>
> I am stuck on what might be a simple Xpath expression, I just can't
> visualize the query.
>
> I have a node set that can be the child of any of three nodes. I would
> like to test if a node matching [@url = $this-page] has the child
> <related_info type="x" />.
>
> Here's my XML
> <?xml?>
> <root>
> <silo>
> <level_one url="w123">
> <related_info type="x"/>
> </level_one>
> <level_two>
> <nav_item url="w234">
> <related_info type="x"/>
> </nav_item>
> <nav_item url="x234">
> <related_info type="x"/>
> </nav_item>
> </level_two>
> <level_three>
> <nav_item url="w23w">
> <related_info type="x"/>
> </nav_item>
> <nav_item url="x2ww">
> <related_info type="x"/>
> </nav_item>
> </level_three>
> </silo>
> ...
> </root>
>
> I need to do two things.
>
> 1. See if the related info section exists, so I can adjust widths and
> the like.
> 2. Call a named template to operate on the related_info data.
>
> I'm almost at the point of creating a separate (flatter) XML for the
> related_info and be done with it.
>
> Let me know what you think.
>
>
> Jerry



  Reply With Quote
Old 06-27-2003, 03:38 PM   #3
Jerry O
 
Posts: n/a
Default Re: XPATH help with Expression

Hi Guys -

Thanks for the help. I used Dimitre's solution; tried them both but
managed to get his working first. Although, I like the idea of using a
key and will experiment with that version when I have more time, for
right now the straight XPATH was simpler.

I agree with Marrow that I should not have mixed data into element
names but at this time, I cannot rework the XML. Parts of it are
already in production. The good news is the structure will never go
below three levels. Point taken for next time.

Thanks for the tip on XPath Visualizer. It helped me catch a couple of
typos in the solution.

The final version ended up as :

//*/*/*[@url = $this-page and related_info[@type='x'] ]

Cheers,

Jerry O
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump