Full xpath support in visual basic?

G

Guest

Hi,

In an excel 2003 VB application I address data using XPath. I'm using
filters in the XPath expression, however I'm disturbed to see that filters
only works at last node in an expressions like

"/root/foo/bar[@no='5']"

and do not work in this expression

"/root/foo[@no='5']/bar"

Some of my code looks like this:

Set xp = ActiveSheet.Range("j32").XPath
xp.SetValue ActiveWorkbook.XmlMaps(mymapname),
"/pipe-int/pipe_design/cross_sectional_design/layers/layer[@no='14']/outer_diameter"

Is it correct that filters are only supported at last node, I really can't
imagine this but I've tried different setups that support this question. Am I
missing some dll's or do you have any idea of what could be wrong?
 
G

Guest

Thank you Nick,

Does anyone know why MS has chosen this stripped down xpath parser?

regard Jesper.

NickHK said:
Jesper,
Not that I know anything about XPath, but:
http://msdn.microsoft.com/library/en-us/odc_xl2003_ta/html/odc_xl_Excel2003XMLIntro.asp
<Quote>
An optional filter can be expressed at the end of the xpath.
Example: "/ns1:root/ns1:row/ns1:column1[@foo='abc']" is supported but not
"/ns1:root/ns1:row[@foo='abc']/ns1:column1"
</Quote>

NickHK

Jesper said:
Hi,

In an excel 2003 VB application I address data using XPath. I'm using
filters in the XPath expression, however I'm disturbed to see that filters
only works at last node in an expressions like

"/root/foo/bar[@no='5']"

and do not work in this expression

"/root/foo[@no='5']/bar"

Some of my code looks like this:

Set xp = ActiveSheet.Range("j32").XPath
xp.SetValue ActiveWorkbook.XmlMaps(mymapname),
"/pipe-int/pipe_design/cross_sectional_design/layers/layer[@no='14']/outer_d
iameter"

Is it correct that filters are only supported at last node, I really can't
imagine this but I've tried different setups that support this question. Am I
missing some dll's or do you have any idea of what could be wrong?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top