SAS Release 8.1のSAS XML LIBNAME
エンジンを利用すると次のようなことができます。
SASデータセットをXMLドキュメントで出力する。
SAS proprietary format -> XML
XMLドキュメントの読み込み。XML -> SAS proprietary format
LIBNAME libref XML 'external_file_name' [ XM_engine_options ]
libref SASのライブラリ名 external_file_name 出力先のファイル名 XM_engine_options XML出力オプション
XML出力オプション
XMLTYPE= {GENERIC | ORACLE | OIMDBM | EXPORT | HTML}
XLMの出力形式の指定
GENERIC (デフォルト値) データセットの変数名と値をXMLで出力します。 ORACLE Oracle8i XML形式で出力します。 OIMDBM Open Information Model形式で出力します。
OIMDBMを指定すると、メタ・データの情報とデータの値が出力されます。
(http://www.mdcinfo.com/oim/)EXPORT SAS Release 8.1ではOIMDBMと同じです。 HTML HTMLのテーブル形式で出力します。 CHARSET=character-set
ENCODING=encoding
INDENT=integer
インデントの指定(デフォルト3)
XMLDATAFORM={ELEMENT | ATTRIBUTE}
変数名をELEMENTで出力するかATTRIBUTEで出力するかの指定をします。
XMLSCHEMA={NONE | NO | IGNORE | FULL | YES}
OIMDBMあるいはHTMLで出力するときにスキーマの情報を出力するかどうかの指定をします。
デフォルト値は、NONE (NO, IGNORE)です。
OIMSTART=nnn
OIMDBM出力のメタ情報のレベルを指定します。
PROC FREQ data=sashelp.prdsal2; TABLES PRODUCT / OUT=prdtbl; weight actual; run; /* XMLファイルの出力 */ libname trans xml 'c:\sas\prdtbl.xml' ; proc copy in=work out=trans; select prdtbl; run; |
出力結果 (prdtbl.xml)
<?xml version="1.0" encoding="windows-1252" ?> <TABLE> <PRDTBL> <PRODUCT> BED </PRODUCT> <COUNT> 3710251.84 </COUNT> <PERCENT> 24.721527 </PERCENT> </PRDTBL> <PRDTBL> <PRODUCT> CHAIR </PRODUCT> <COUNT> 3695383.62 </COUNT> <PERCENT> 24.6224595 </PERCENT> </PRDTBL> <PRDTBL> <PRODUCT> DESK </PRODUCT> <COUNT> 3718359 </COUNT> <PERCENT> 24.7755452 </PERCENT> </PRDTBL> <PRDTBL> <PRODUCT> SOFA </PRODUCT> <COUNT> 3884187.86 </COUNT> <PERCENT> 25.8804683 </PERCENT> </PRDTBL> </TABLE> |
XML形式で出力されたファイルは、他システムとの電子的なデータ交換やXML形式のデータをサポートしているOracleやDB2などのRDBなどで利用することが可能ですが、ここではXSLTを使ってSVG形式ファイルを作成しグラフ表示を行う例を示します。
1. XSLTの作成 (tbl2svg.xsl)
2. XSLTプロセッサを使ってXMLからSVGを作成 (tbl_svg.svg)
という手順でSVGを作成しました。
XSLTプロセッサには、XTを使用しました。(XTを利用する場合は、"windows-1252"というエンコーディングがサポートされていないのでエンコードの指定を削除するか、"ISO-8859-1"などに変更する必要があります。)
生成されたSVGファイルは、Adobe SVG Viewerなどを利用して表示することができます。

Adobe SVG View (http://www.adobe.com/svg/)