No. When called without an argument, the context node is converted to a
string and used as the argument. There are many alternative ways to test
whether the string value of the context node is the empty string, I simply
carried the one that the OP used so as not to confuse the reference. Other
possibilities include
string(.) = ''
normalize-space() = ''
normalize-space(.) = ''
not(string(.))
normalize-space(string-length(.)) = 0
etc.

Wendell posted "not(string())", but according to topxml.com (I know,
it's not the canonical source), a call to string() with no arguments always
returns the empty string. I haven't verified that one either way...

Actually, I would rather put the "td" element into the named template,
like so:

I left it out in case the calling template would care to modify
attributes of 'td' such as rowspan or width. Personal choice, I guess.