Re: [xsl] text() function

Subject: Re: [xsl] text() function
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 25 Apr 2005 14:57:19 -0400
At 2005-04-25 11:46 -0700, Sameer N wrote:
I am trying to look if the word blah exists in the entire document.

contains( /, "blah" )



Is there any difference between
//*[conatins(text(), "blah")]
and
//*[conatins( . , "blah")]

Absolutely. Each one has a predicate that addresses a single node, the first one addresses the value of the first text child node of the current node, while the second one addresses the value of current node.


Is the using of string() function as suggested in the blog right way to do what I want... because I read in one book that string() only matches the first element found and does not go thru the entire document trying to match all elements found.

XPath states that the value of an element is the concatenation of all descendent text nodes, hence the difference in what you have above: checking that "." contains "blah" checks the concatenation of all text nodes of the current node.


In my suggestion above you would search the value of the root node, which is the value of the document element, which is the value of the concatenation of all text nodes in the entire document.

I hope this helps.

. . . . . Ken

--
World-wide on-site corporate, govt. & user group XML/XSL training.
G. Ken Holman                 mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd.          http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness  http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers:  http://www.CraneSoftwrights.com/legal

Current Thread