| Understanding and Using Tagsets for the XML Engine |
This example defines a customized tagset in order to generate HTML output.
First, the following code creates the data set WORK.SINGERS:
data Singers;
input Name $ Style $;
label Name="SingerFirstName"
Style="MusicStyle";
datalines;
Tom Rock
Kris Country
Willie Country
Barbra Contemporary
Paul Rock
Randy Country
;
The following code defines the new tagset Tagsets.Enghtml:
proc template;
define tagset tagsets.engHTML;
parent = tagsets.sasxmog;
notes "SAS XML LIBNAME Engine simple HTML table";
define event doc;
start:
put '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">' CR;
put '<HTML>' CR;
break;
finish:
put '</HTML>' CR;
break;
end;
define event doc_body;
start:
ndent;
put '<BODY>' CR;
break;
finish:
put '</BODY>' CR;
xdent;
break;
end;
define event table;
start:
ndent;
put '<TABLE border="1" width="100%">' CR;
break;
finish:
put '</TABLE>' CR;
xdent;
break;
end;
define event colspecs;
start:
break / if cmp(XMLMETADATA, "NONE");
ndent;
put '<THEAD>' CR;
ndent;
put '<TR>' CR;
ndent;
break;
finish:
break / if cmp(XMLMETADATA, "NONE");
xdent;
put '</TR>' CR;
xdent;
put '</THEAD>' CR;
xdent;
break;
end;
define event colspec_entry;
break / if cmp(XMLMETADATA, "NONE");
put '<TH> ';
put NAME;
put ' </TH>' CR;
break;
end;
define event table_body;
start:
ndent;
put "<TBODY>" CR;
break;
finish:
put "</TBODY>" CR;
xdent;
break;
end;
define event SASRow;
start:
ndent;
put '<TR>' CR;
break;
finish:
put '</TR>' CR;
xdent;
break;
end;
define event SASColumn;
start:
ndent;
put '<TD' ;
break;
finish:
put '</TD>' CR ;
xdent;
break;
end;
define event MLEVDAT;
put '>' ;
put ' ';
put VALUE;
put ' ';
break;
end;
end; /* engHTML */
run;
These statements specify the customized tagset Tagsets.Enghtml and generate the HTML output that follows:
libname myhtml xml 'C:\My Documents\HTML\testhtml.html' tagset=tagsets.enghtml; proc copy in=work out=myhtml; select Singers; run;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<BODY>
<TABLE border="1" width="100%">
<TBODY>
<TR>
<TD> Tom </TD>
<TD> Rock </TD>
</TR>
<TR>
<TD> Kris </TD>
<TD> Country </TD>
</TR>
<TR>
<TD> Willie </TD>
<TD> Country </TD>
</TR>
<TR>
<TD> Barbra </TD>
<TD> Contempo </TD>
</TR>
<TR>
<TD> Paul </TD>
<TD> Rock </TD>
</TR>
<TR>
<TD> Randy </TD>
<TD> Country </TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
Copyright © 2007 by SAS Institute Inc., Cary, NC, USA. All rights reserved.