This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: XPath for getting the nearest attribute value on the ancestor axis
- To: "Sanjay Pandey/Towers Perrin" <pandeys at towers dot com>
- Subject: Re: [xsl] XPath for getting the nearest attribute value on the ancestor axis
- From: Jeni Tennison <mail at jenitennison dot com>
- Date: Thu, 16 Aug 2001 17:43:31 +0100
- CC: xsl-list at lists dot mulberrytech dot com
- Organization: Jeni Tennison Consulting Ltd
- References: <OF7F46E821.D64F287A-ON85256AAA.00491395@towers.com>
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Sanjay,
> I am at a particular element node and now I need a generic XPath to
> get me the closest Attribute (attributes can be 'name', 'type',
> 'category' and sorts ...), if any, and return its value. This would
> be useful to identify my elements uniquely.
You're close. The main thing is that if you want something that's
located relative to the current node then you have to use a relative
path (one that doesn't begin with /).
For example, if you want to get the nearest ancestor of the current
node that has a name attribute, then you should probably use the
relative path:
ancestor::*[@name][1]/@name
though you could use the equivalent:
(ancestor::*/@name)[last()]
If you want to find the nearest ancestor of the current node that has
a name, type or category attribute, then you should probably use the
relative path:
ancestor::*[@name or @type or @category][1]
/@*[name() = 'name' or name() = 'type' or name() = 'category']
Again, you could use one of the following equivalent paths:
(ancestor::*/@*[name() = 'name' or name() = 'type' or
name() = 'category'])[last()]
(ancestor::*/@name | ancestor::*/@type |
ancestor::*/@category)[last()]
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list