You don't have any ROW elements, you have {http://www.filemaker.com/fmpdsoresult}:ROW elements so you need to use this namespace when searching. Add the namespace URI to the stylesheet element and give it an arbitrary prefix:
Code:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:default='http://www.filemaker.com/fmpdsoresult'>
Then to search use:
You also don't need the for-each or the apply-templates after it. Your search term is an element called 'Waldo', what you need is the text 'Waldo' so you must enclose it in quotes, presumably you'll be passing this in to the stylesheet in normal use. Personally I'd use a variable for the translated term. The first template matching root is also unnecessaary as your match of //default:ROW will catch all ROW elements in default namespace. A simple version of your stylesheet would be:
Code:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:default='http://www.filemaker.com/fmpdsoresult'
exclude-result-prefixes="default">
<xsl:output method='html' version='1.0' encoding='iso-8859-1' indent='no'/>
<xsl:param name="upperCase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:param name="lowerCase" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:param name="searchTextToTranslate" select="'Waldo'"/>
<xsl:variable name="translatedSearchText" select="translate($searchTextToTranslate, $upperCase, $lowerCase)"/>
<xsl:template match="//default:ROW">
<xsl:if test="contains(translate(default:book_name, $upperCase, $lowerCase), $translatedSearchText)">
<xsl:value-of select="default:book_author"/><br/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Joe (MVP - xml)