Understanding and Using Tagsets for the XML Engine

Defining and Using a Customized Tagset to Export an HTML Document

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;

HTML Output for Testhtml.HTML

<!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>

space
Previous Page | Next Page | Top of Page