IMHO, we should either create a simple wiki-style table markup and leave the complex tables to HTML, or enable the wiki-markup to do both, inevitable resulting in a more complicated markup.
For that, we will need a way to include attributes in tables, rows and cells, no matter if we use stylesheets or "inline" attributes.
My (general) proposal:
{attr|text}
where *text* can span multiple lines (in the source!), and can include nested {attr|text} constructs. The *attr* part is always optional.
Now, should we use that for tables only, or for div and span as well. In the former case, we could say
{{{ means table
{{ means row
{ means cell
which could look like
{{ {President} {Instrument} }}
with *all* HTML options available if needed, for each element:
{colspan=2 bgcolor=blue|President}
Or, we only use {{}}, with {{table|text}}, {{row|text}}, {{div|text}}, and *cell* as default. Looks like
{{table|
{{row| {{President}} {{Instrument}} }}
}}
Not very pretty, but with all options available, even nested tables etc.
Optionally, we can limit HTML attributes by using our own style:
{{table species|
using "style:species" as stylesheet, or
{{table, blue background, thin red border,centered|
Sorry for typos and not answering to other suggestions, but I am on vacation, typing on a PalmPilot...
Magnus