RE: [xsl] Finding out if the current node is an attribute node

Subject: RE: [xsl] Finding out if the current node is an attribute node
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Sun, 01 Jun 2003 21:13:47 -0400
At 2003-06-02 11:11 +1200, Conal Tuohy wrote:
Does "self::*@" work?

This is not a well-formed XPath expression.


And the principal node type along the self access is element, not attribute, so this is the wrong direction to look for an answer.

At 2003-06-01 22:59 +0200, Adrian Grigore wrote:
> In other words, I am looking for an easy way to check within the
> template  example if the template's match attribute is something like
>
> /somenode/@id

test="count(.|../@id)=1" is only true when the current node is an attribute "id".


test="count(.|../self::somenode/@id)=1" is only true when the current node is an attribute named "id" and it is attached to an element named "somenode".

> in which case it matched an attribute node or something like
>
> /somenode/somechildnode

test="self::somechildnode" is only true when the current node is the element "somechildnode".


test="self::somechildnode/parent::somenode" is only true when the current node is the element "somechildnode" child of the "somenode" element.

> So, is there any simple way to do this? Maybe I overlooked
> something obvious?

Simple, but not obvious.


> There is certainly no other way for me to implement this, I
> looked for
> another way for many hours already. Any help would be greatly
> appreciated! :-)

Consider that the attribute tests I have count the number of nodes in the union of the current node and the current node's "id" attribute ... since XPath 1.0 nodes are not duplicated in a node set, the union will only produce a singleton node set when the current node *is* the node being addressed.


I hope this helps.

................. Ken

p.s. for those who own our XSLT PDF book Tenth Edition, we document on pages 192 and 193 examples of all possible testing patterns for node types for the current node ... BTW, the Eleventh Edition should be out in a few weeks.

--
Upcoming hands-on courses: (registration still open!)
-      (XSLT/XPath and/or XSL-FO) North America: June 16-20, 2003

G. Ken Holman                mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.         http://www.CraneSoftwrights.com/m/
Box 266, Kars, Ontario CANADA K0A-2E0   +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                      Definitive XSLT and XPath
ISBN 0-13-140374-5                              Definitive XSL-FO
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-11-X              Practical Formatting Using XSL-FO
Member of the XML Guild of Practitioners:    http://XMLGuild.info
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/m/bc


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread