Hi:
To add .02 on #4. How you actually specify a style is with the STYLE= option. For example to build on Tim's comment:
[pre]
ODS HTML file='will_use_style.html' style=sasweb;
...and...
ODS CSV file='will_NOT_use_style.csv' style=sasweb;
[/pre]
Both of those may appear to work, however, the HTML tagset template was coded to -know- and -use- style elements to build the output file. But the CSV tagset template was coded to -not use- style elements to build the output file. So, just because I specified a style on the ODS CSV invocation, the style specification is irrelevant and unnecessary because ODS CSV or more accurately, the tagset template that is used to create the ODS CSV output file does not use the style template.
You are correct, in your last statement that TAGSETS.EXCELXP and TAGSETS.RTF or HTML all will use different "control codes" or markup tags to specify "bold" versus "red" and how to start a table and how to start a table row. Let's take the SAS title statement for example. You code this:
[pre]
ods listing close;
ods html file='whattitle.html' style=sasweb;
ods tagsets.rtf file='whattitle.rtf' style=sasweb;
title bold c=red "Wombat";
proc print data=sashelp.class(obs=2);
run;
ods _all_ close;
[/pre]
in the HTML file, you will see this markup:
[pre]
<td class="c SystemTitle" style=" font-weight: bold; color: #FF0000;">Wombat</td>
[/pre]
versus this in the RTF file (if you look at it with Notepad):
[pre]
\pard\plain\intbl\sb10\sa10\fs25\cf6\qc\f1\b{Wombat\cell}
[/pre]
So that single TITLE statement from the SAS program got handled as appropriate for each destination. To look at the underlying markup tags or control string information, I opened each output file in Notepad.
You get the different markup because the person who coded the tagset template coded the SystemTitle event to write different markup control strings or tags for each destination. It was probably someone how knew HTML really, really well, who coded the HTML tagset and someone who knew RTF really, really well who coded the RTF tagset. What they needed to know was that the SAS title would be contained in the event variable information for the SystemTitle event. In other words, the information that SAS "sends" to the tagset template controlled destination (or Markup destination) does not change. How each destination HANDLES the event information is what will change.
For a longer discussion of EVENTS and EVENT handling in Tagset Templates, consult the documentation or previous papers on ODS MARKUP and TAGSET Templates.
cynthia
(OK, I guess that was more .05 than .02 worth of adding on...sorry if that's too much information.)