XMLドキュメントが正しく構成されているかどうかは、その内容ではなく、構造により判定されます。このため、XML EngineはXMLドキュメントが正しく構成されているとは仮定できますが、ルート要素が単一ノード要素のインスタンスのみ(すなわち単一のデータセットのみ)を包含しているとは仮定できません。したがって、XML
Engineは、複数のノード(すなわち複数のSASデータセット)の可能性を考慮に入れる必要があります。
たとえば、次のような正しく構成されているXMLドキュメントをインポートする場合、同ドキュメントは、2つのSASデータセットHIGHTEMPおよびLOWTEMPを含んでいるものとして認識されます。
<?xml version="1.0" encoding="windows-1252" ?>
<CLIMATE> 1
<HIGHTEMP> 2
<PLACE> Libya </PLACE>
<DATE> 1922-09-13 </DATE>
<DEGREE-F> 136 </DEGREE-F>
<DEGREE-C> 58 </DEGREE-C>
</HIGHTEMP>
.
. more instances of <HIGHTEMP>
.
<LOWTEMP> 3
<PLACE> Antarctica </PLACE>
<DATE> 1983-07-21 </DATE>
<DEGREE-F> -129 </DEGREE-F>
<DEGREE-C> -89 </DEGREE-C>
</LOWTEMP>
.
. more instances of <LOWTEMP>
.
</CLIMATE>
前述のXMLドキュメントをインポートする場合、次の処理が行われます。
| 1 |
XML Engineは、最初のインスタンスタグ<CLIMATE>をルート包含要素(すなわちドキュメントコンテナ)として認識します。 |
| 2 |
第2レベルのインスタンスタグ<HIGHTEMP>以降では、XML Engineは、反復要素インスタンスを、一定の個数の列を伴う任意の個数の行の集合(すなわち表)として使用します。 |
| 3 |
第2レベルのインスタンスタグが変化すると、XML Engineは、その変化を異なるSASデータセットとして解釈します。 |
結果として、2つのSASデータセットHIGHTEMPとLOWTEMPが生成されます。これらのデータセットは同じ変数を持ちますが、含まれているデータは異なります。
インポート結果が期待通りであることを確認するには、DATASETSプロシジャを使用します。たとえば、次のステートメントを実行すると、次のSAS出力が生成されます。
libname climate xml 'C:\My Documents\climate.xml';
proc datasets library=climate;
quit;
CLIMATEライブラリのDATASETSプロシジャ出力