This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XPath problem
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Thu, 20 Dec 2001 14:16:19 -0000
- Subject: RE: [xsl] XPath problem
- Reply-to: xsl-list at lists dot mulberrytech dot com
> I have my XML as follows
>
> <records>
> <record1 type="type1">
> <field1 value="xyz">
> </record1>
>
> <record1 type = "type2">
> </record1>
> </records>
>
> If I am looking for an element which does not happen to be an
> attribute my
> logic below works fine in getting the nearest "@type" value
> on the ancestor
> axis.
>
> NodeList nl = XPathAPI.eval(root,
> //xs:field1,prefixResolver).nodelist()
> and then for each Node instance I can get the nearest "@type" value by
> doing something like this
There are quite a few XPath APIs around now that are confusingly similar, it
would help if you told us which one you were using.
>
> XObject obj = XPathAPI.eval(currentRecord1Node,"ancestor::
> *[@type][1]/@*[name()='type']",prefixResolver);
Why do you write "/*[name()='type']" rather than "/@type"?
> String result = obj.toString();
>
> I run into problem when what I am looking happens to be an
> Attribute e,g
> "value". So, if my "currentRecord1Node" is for this attribute element
> "value", I am loosing my Node structure information and I am
> unable to get
> to the nearest "@type" value.
Your terminology is way out (there is no such thing as an attribute element,
I think you mean an attribute node). But I can't see any reason why the
above expression shouldn't work just because the current node is an
attribute: attributes have ancestors jsut as elements do.
Mike Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list