RE: [xsl] text() function

Subject: RE: [xsl] text() function
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 25 Apr 2005 20:06:21 +0100
> Is there any difference between
> //*[conatins(text(), "blah")]
> and
> //*[conatins( . , "blah")]
> 

//*[contains(text(), "blah")] 

selects all elements whose first child text node of the element contains
"blah".

//*[contains( . , "blah")]

selects all elements whose string value contains "blah".

Consider the following elements:

<a>blah</a>
<b><x>blah</x></b>
<c>bl<i>ah</i></c>
<d>bl<!--c-->ah</d>
<e>foo <x/> blah</e>
<f>blah <x/> foo</f>

The first expression selects only <a> and <f>. The second expression selects
all six of these elements.

Generally, it's best to work with the string value (or in 2.0, the typed
value) of an element, rather than working directly with its text nodes.

Michael Kay
http://www.saxonica.com/

Current Thread