Re: [xsl] text() function

Subject: Re: [xsl] text() function
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 25 Apr 2005 15:04:58 -0400
An afterthought: if you wanted to avoid concatenating all of the text nodes because you might have a very large amount of text, you can check all individual text nodes using:


This will also not give you a false positive in the following:


So, you will have to decide if the above contains "blah" or not. If you decide that it does not contain "blah", then you would be obliged to check all individual text nodes as described above, instead of any concatenation like that described in my earlier post copied below.

I hope this helps.

. . . . . . Ken

p.s. btw, text() is *not* a function, it is a grammatical construct in XPath for NodeTest ... it does not "call" anything as a function would call code

At 2005-04-25 14:57 -0400, I wrote:
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")]
//*[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.
Box 266, Kars, Ontario CANADA K0A-2E0    +1(613)489-0999 (F:-0995)
Male Breast Cancer Awareness
Legal business disclaimers:

Current Thread