前のページ|次のページ

XMLMapを使用し、XMLドキュメントを複数のSASデータセットとしてインポートする

次の例では、XMLMapを使用して、XMLマークアップを2つのSASデータセットに対応付ける方法を定義します。この例で使用するXMLドキュメントRSS.XMLは、正しく構成されていないためXML Engineにより正しく変換されず、その結果として正しくインポートできません。
注: XMLドキュメントRSS.XMLは、RSS (Rich Site Summary)というXMLフォーマットを使用します。RSSは、元々はMy Netscape Network (MNN)コミュニティ内でコンテンツを交換するために、Netscapeにより設計されたものです。RSSフォーマットは、見出しやその他のWebコンテンツを共有するために広く採用されており、伝送フォーマットとしてのXMLの優れた事例となっています。
インポートするXMLドキュメントRSS.XMLの内容は次のとおりです。
  <?xml version="1.0" encoding="ISO-8859-1" ?> 
- <rss version="0.91">
- <channel>
  <title>WriteTheWeb</title> 
  <link>http://writetheweb.com</link> 
  <description>News for web users that write back</description> 
  <language>en-us</language> 
  <copyright>Copyright 2000, WriteTheWeb team.</copyright> 
  <managingEditor>editor@writetheweb.com</managingEditor> 
  <webMaster>webmaster@writetheweb.com</webMaster> 
- <image>
  <title>WriteTheWeb</title> 
  <url>http://writetheweb.com/images/mynetscape88.gif</url> 
  <link>http://writetheweb.com</link> 
  <width>88</width> 
  <height>31</height> 
  <description>News for web users that write back</description> 
  </image>
- <item>
  <title>Giving the world a pluggable Gnutella</title> 
  <link>http://writetheweb.com/read.php?item=24</link> 
  <description>WorldOS is a framework on which to build programs that work like 
     Freenet or Gnutella -allowing distributed applications using peer-to-peer 
     routing.
     </description> 
  </item>
- <item>
  <title>Syndication discussions hot up</title> 
  <link>http://writetheweb.com/read.php?item=23</link> 
  <description>After a period of dormancy, the Syndication mailing list has become 
     active again, with contributions from leaders in traditional media and Web 
     syndication.
     </description> 
  </item>
- <item>
  <title>Personal web server integrates file sharing and messaging</title> 
  <link>http://writetheweb.com/read.php?item=22</link> 
  <description>The Magi Project is an innovative project to create a combined personal 
     web server and messaging system that enables the sharing and synchronization of 
     information across desktop, laptop and palmtop devices.</description> 
  </item>
- <item>
  <title>Syndication and Metadata</title> 
  <link>http://writetheweb.com/read.php?item=21</link> 
  <description>RSS is probably the best known metadata format around. RDF is probably 
     one of the least understood. In this essay, published on my O'Reilly Network 
     weblog, I argue that the next generation of RSS should be based on RDF.
  </description> 
  </item>
- <item>
  <title>UK bloggers get organised</title> 
  <link>http://writetheweb.com/read.php?item=20</link> 
  <description>Looks like the weblogs scene is gathering pace beyond the shores of the 
     US. There's now a UK-specific page on weblogs.com, and a mailing list at egroups.
     </description> 
  </item>
- <item>
  <title>Yournamehere.com more important than anything</title> 
  <link>http://writetheweb.com/read.php?item=19</link> 
  <description>Whatever you're publishing on the web, your site name is the most 
     valuable asset you have, according to Carl Steadman.</description> 
  </item>
  </channel>
  </rss>
このXMLドキュメントを正しくインポートするには、同ドキュメントに含まれているXMLマークアップを対応付ける方法を定義したXMLMapを作成します。RSS.XMLを正しくインポートするために必要となる構文を含むXMLMapファイルRSS.MAPの内容は次のようになります。このXMLMap構文は、XMLマークアップの変換方法をXML Engineに伝えます。変換方法の詳細については、後続の説明を参照してください。RSS.XMLをインポートすることで、2つのSASデータセットCHANNELおよびITEMSが生成されます。CHANNELはコンテンツ情報を、ITEMSは個々のニュース記事をそれぞれ含んでいます。
<?xml version="1.0" encoding="UTF-8"?>

<SXLEMAP name="SXLEMap" version="2.1"> 1

        <TABLE name="CHANNEL"> 2
        <TABLE-PATH syntax="XPath">/rss/channel</TABLE-PATH> 3
        
        <COLUMN name="title"> 4
            <PATH syntax="XPath">/rss/channel/title</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>200</LENGTH>
        </COLUMN>

        <COLUMN name="link"> 5
            <PATH syntax="XPath">/rss/channel/link</PATH>
            <DESCRIPTION>Story link</DESCRIPTION>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>200</LENGTH>
        </COLUMN>

        <COLUMN name="description">
            <PATH syntax="XPath">/rss/channel/description</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>1024</LENGTH>
        </COLUMN>

        <COLUMN name="language">
            <PATH syntax="XPath">/rss/channel/language</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>8</LENGTH>
        </COLUMN>

        <COLUMN name="version"> 6
            <PATH syntax="XPath">/rss@version</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>8</LENGTH>
        </COLUMN>

    </TABLE>

     <TABLE description="Individual news stories" name="ITEMS"> 7
        <TABLE-PATH syntax="XPath">/rss/channel/item</TABLE-PATH>

        <COLUMN name="title"> 8
            <PATH syntax="XPath">/rss/channel/item/title</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>200</LENGTH>
        </COLUMN>

        <COLUMN name="URL"> 9
            <PATH syntax="XPath">/rss/channel/item/link</PATH>
            <DESCRIPTION>Story link</DESCRIPTION>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>200</LENGTH>
        </COLUMN>

        <COLUMN name="description"> 9
            <PATH syntax="XPath">/rss/channel/item/description</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>1024</LENGTH>
        </COLUMN>

    </TABLE>

</SXLEMAP>
前述のXMLMapがXMLマークアップをどのように変換するかについて、次に説明します。
1 SASデータセットを定義するルート包含要素です。
2 CHANNELデータセットを定義する要素です。
3 この要素は、CHANNELデータセットの変数を収集するXMLドキュメント内の位置を定義する場所パスを指定します。
4 この要素は、CHANNELデータセット内の変数TITLEの属性を指定します。XPath構成は、現在のタグが見つかる場所、および指定の要素からデータにアクセスできる場所を指定します。
5 続くCOLUMN要素は、CHANNELデータセットの変数LINK、DESCRIPTION、LANGUAGEを定義します。
6 この要素は、CHANNELデータセット内にある最後の変数(VERSION)の属性を指定します。このXPath構成は、現在のタグが見つかる場所を指定し、属性フォームを使用して指定の要素からデータにアクセスします。
7 ITEMSデータセットを定義する要素です。
8 この要素は、ITEMSデータセットの変数TITLEの属性を指定します。
9 後続のCOLUMN要素は、ITEMSデータセット内の他の変数(URLおよびDESCRIPTION)を定義します。
次のSASステートメントでは、RSS.MAPという名前のXMLMapファイルを指定した上で、XMLドキュメントRSS.XMLをインポートします。その後、DATASETSプロシジャによりインポート結果を検証します。
filename rss 'C:\My Documents\rss.xml';
filename map 'C:\My Documents\rss.map';

libname rss xmlv2 xmlmap=map access=readonly;

proc datasets library=rss;
run;
quit;
2つのデータセットを表示するRSSライブラリのDATASETSプロシジャ出力
2つのデータセットを表示するRSSライブラリのDATASETSプロシジャ出力
前のページ|次のページ|ページの先頭へ