This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XPath problem
- From: "Sanjay Pandey/Towers Perrin" <pandeys at towers dot com>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Thu, 20 Dec 2001 09:51:21 -0500
- Subject: RE: [xsl] XPath problem
- Reply-to: xsl-list at lists dot mulberrytech dot com
Mike,
I am using Xalan.
Also, I am writing as "/*[name()='type']" as in the actual application I
have some other attribute checks too "/*[name()='type' or name() = 'name'
...]"
Thanks,
To: <xsl-list@lists.mulberrytech.com>
"Michael Kay" cc: (bcc: Sanjay Pandey/Towers Perrin)
<michael.h.kay@ntlworld.com Subject: RE: [xsl] XPath problem
>
Sent by:
owner-xsl-list@lists.mulber
rytech.com
12/20/2001 09:16 AM
Please respond to xsl-list
> 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
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list