XMLMapのPATH要素は、場所パスを指定するためのXPath形式を複数サポートしています。場所パスは、現在の変数の値を取り出すには、XMLドキュメント内のどの位置を検索し、特定のタグにアクセスする必要があるかをXML
Engineに伝えます。また、場所パスは、XPath形式により指定される機能を実行して変数の値を取り出すようXML Engineに伝えます。
次の例では、XMLドキュメントをインポートする際に、サポートされている各種のXPath形式を指定する方法を示します。これには、3つの要素形式と2つの属性形式が含まれます。
インポートするXMLドキュメントNHL.XMLの内容は次のとおりです。
<?xml version="1.0" encoding="iso-8859-1" ?>
<NHL>
<CONFERENCE> Eastern
<DIVISION> Southeast
<TEAM founded="1999" abbrev="ATL"> Thrashers </TEAM>
<TEAM founded="1997" abbrev="CAR"> Hurricanes </TEAM>
<TEAM founded="1993" abbrev="FLA"> Panthers </TEAM>
<TEAM founded="1992" abbrev="TB" > Lightning </TEAM>
<TEAM founded="1974" abbrev="WSH"> Capitals </TEAM>
</DIVISION>
</CONFERENCE>
</NHL>
このXMLドキュメントをインポートするのに使用されるXMLMapの内容は次のようになります。また、PATH要素内の各XPath形式に関する説明を次に示します。
<?xml version="1.0" ?>
<SXLEMAP version="2.1">
<TABLE name="TEAMS">
<TABLE-PATH syntax="XPath">
/NHL/CONFERENCE/DIVISION/TEAM
</TABLE-PATH>
<COLUMN name="ABBREV">
<PATH syntax="XPath">
/NHL/CONFERENCE/DIVISION/TEAM/@abbrev 1
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>3</LENGTH>
</COLUMN>
<COLUMN name="FOUNDED">
<PATH syntax="XPath">
/NHL/CONFERENCE/DIVISION/TEAM/@founded[@abbrev="ATL"] 2
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>10</LENGTH>
</COLUMN>
<COLUMN name="CONFERENCE" retain="YES">
<PATH syntax="XPath">
/NHL/CONFERENCE 3
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>10</LENGTH>
</COLUMN>
<COLUMN name="TEAM">
<PATH syntax="XPath">
/NHL/CONFERENCE/DIVISION/TEAM[@founded="1993"] 4
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>10</LENGTH>
</COLUMN>
<COLUMN name="TEAM5">
<PATH syntax="XPath">
/NHL/CONFERENCE/DIVISION/TEAM[position()=5] 5
</PATH>
<TYPE>character</TYPE>
<DATATYPE>STRING</DATATYPE>
<LENGTH>10</LENGTH>
</COLUMN>
</TABLE>
</SXLEMAP>
| 1 |
変数Abbrevは、特定の属性から値を選択する属性形式を使用します。XML Engineは、TEAM要素を検出するまでXMLマークアップをスキャンします。続いて、XML
Engineは、abbrev=属性から値を取り出します。取り出された結果は各チームの略称となります。
|
| 2 |
変数Foundedは、別の属性の値に基づいて特定の属性から条件付きで選択を行う属性形式を使用します。XML Engineは、TEAM要素を検出するまでXMLマークアップをスキャンします。続いて、XML
Engineは、abbrev=属性の値がATLである場合にfounded=属性から値を取り出します。取り出された値は1999になります。これら2つの属性は、同じ要素に対して指定されたものでなければなりません。
|
| 3 |
変数Conferenceは、指定の要素からPCDATAを選択する要素形式を使用します。XML Engineは、CONFERENCE要素を検出するまでXMLマークアップをスキャンします。続いて、XML
Engineは、開始タグ<CONFERENCE>と終了タグ</CONFERENCE>の間に記述されている値を取り出します。取り出された値はEasternになります。
|
| 4 |
変数Teamは、指定の要素から条件付きでPCDATAを選択する要素形式を使用します。XML Engineは、founded=属性の値が1993であるTEAM要素を検出するまでXMLマークアップをスキャンします。続いて、XML
Engineは、開始タグ<TEAM>と終了タグ</TEAM>の間に記述されている値を取り出します。取り出された値はPanthersになります。
|
| 5 |
変数Team5は、指定の要素の特定のオカレンスに基づいて、その要素から条件付きでPCDATAを選択する要素形式を使用します。位置関数は、TEAM要素の5番目のオカレンスを検出するまでXMLマークアップをスキャンするようXML
Engineに伝えます。続いて、XML Engineは、開始タグ<TEAM>と終了タグ</TEAM>の間に記述されている値を取り出します。取り出された値はCapitalsになります。
|
次のSASステートメントでは、Nhl1.mapという名前のXMLMapファイルを指定した上で、XMLドキュメントNHLShort.xmlをインポートします。続いて、PRINTプロシジャにより、結果として生成された変数とその選択された値を表示します。
filename nhl 'C:\My Documents\XML\NhlShort.xml';
filename map 'C:\My Documents\XML\Nhl1.map';
libname nhl xmlv2 xmlmap=map;
proc print data=nhl.teams noobs;
run;
結果として生成された変数とその選択された値を表示するPRINTプロシジャ出力