This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: XPath for getting the nearest attribute value on the ancestor axis


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]