The problem is that you put an & character without escaping into your
template, which renders your markup invalid.
Try this:
import cgi
...
link = "<a href=\"%s\" target=\"_blank\">%s</a>" % (
cgi.escape(href), cgi.escape(self.genus))
Please note, that cgi.escape is not perfect for escaping attribute
values, you should use xml.sax.saxutils.escape for that instead.
BTW, why do you substitute your variables into the template instead of
passing that to Genshi? Genshi would escape it automatically for you:
link_template = MarkupTemplate(
'<a href="${href}" target="_blank">${text}</a>')
link_stream = link_template.generate(href=href, text=self.genus)
link_html = link_stream.render()
Hope it helps.
Viktor