期待される XML データの形式
XML 要素の構造は、RPG 変数の構造と一致することが必要です。
- RPG 変数に一致する XML 要素のネスティング・レベルは、XML 文書の任意のレベルに設定可能ですが、その XML 要素が文書の想定されたネスティング・レベルにない場合は path オプションを指定する必要があります。
path オプションが指定されない場合は、以下の前提条件が適用されます。
- 非配列の変数 (テーブル名および複数回繰り返しデータ構造など) の 場合、文書の要素 (最外部の XML 要素) は RPG 変数に一致する XML 要素であることが前提です。 最外部の XML 要素の名前が RPG 変数の名前と同じではない場合は、path オプションを指定して、使用される XML 要素を指定する必要があります。
- 配列変数の場合、文書の要素 (最外部の XML 要素) の直接の子は RPG 変数に一致する XML 要素であることが前提です。
- RPG サブフィールドに一致する XML 要素は以下の場合があります。
- RPG サブフィールドの親データ構造に一致する XML 要素の XML 属性 (それ自体はデータ構造ではないサブフィールドの場合のみ)
- サブフィールドが含まれているデータ構造に一致する XML 要素の直接の子 XML 要素
- RPG 配列に一致する XML 要素は、同じ親 XML の子である必要があります。 それらの子要素が XML 文書に一緒に存在する必要はなく、別の要素を挿入することも可能です。
注: XML 処理命令は、XML-INTO では無視されます。
処理命令の形式は以下のとおりです。
<?targetname data value ?>
- スカラー変数
D libname S 10A /free XML-INTO libname %XML(xmldoc : option)XML-INTO libname の XML の例 path オプション <libname>data</libname> <library>data</library> 'path=library' <info><library>data</library></info> 'path=info/library' - 配列要素
D sites S 25A DIM(3) /free XML-INTO sites(n) %XML(xmldoc : option)XML-INTO sites の XML の例 path オプション <sites>data</sites> ブランク <custsites>data</custsites> 'path=custsites' <info><sites>data</sites></info> 'path=info/sites' - テーブル名
D tabname S 10A DIM(5) /free XML-INTO tabname %XML(xmldoc : opts)XML-INTO tabname の XML の例 path オプション <tabname>data</tabname> ブランク <library>data</library> 'path=library' <info><library>data</library></info> 'path=info/library' - 単純なデータ構造または複数回繰り返しデータ構造
-
注: 例における XML データでは、判読しやすいように改行およびインデントが使用されています。 XML データは、任意の便利な方式で形式化できます。
D pgm DS D name 10A D lib 10A OR D pgm DS OCCURS(5) D name 10A D lib 10A /free XML-INTO pgm %XML(xmldoc : option)XML-INTO pgm の XML の例 path オプション <pgm> <name>data</name> <lib>data</lib> </pgm>ブランク <program> <name>data</name> <lib>data</lib> </program>'path=program' <api> <program> <name>data</name> <lib>data</lib> </program> </api>'path=api/program' 注: サブフィールド情報は、XML 要素または XML 属性により提供されます。 データ構造のサブフィールドに XML を指定するその他の有効な方法を以下に示します。 スカラー・サブフィールドの XML データを作成する場合には、属性または要素のいずれかを自由に使用して XML 文書を設計できます。
<pgm name="data" lib="data"/> OR <pgm name="data"> <lib>data</lib> </pgm> - スカラー型の配列
D sites S 25A DIM(3) /free XML-INTO sites %XML(xmldoc : option)XML-INTO sites の XML の例 path オプション <anything> <sites>data</sites> <sites>data</sites> <sites>data</sites> </anything>ブランク <info> <custsites>data</custsites> <custsites>data</custsites> <custsites>data</custsites> </info>'path=info/custsites' - データ構造の配列
D pgm DS DIM(3) QUALIFIED D name 10A D lib 10A /free XML-INTO pgm %XML(xmldoc : option)XML-INTO pgm の XML の例 path オプション <anything> <pgm name="name1" lib="lib1"/> <pgm><name>name2</name> <lib>lib2</lib></pgm> <pgm lib="lib3"><name>name3</pgm> </anything>ブランク <programs> <pgm name="name1" lib="lib1"/> <pgm><name>name2</name> <lib>lib2</lib></pgm> <pgm lib="lib3"><name>name3</pgm> </programs>'path=programs/pgm' 注: 3 つの "pgm" XML 要素には、 XML 要素および XML 属性のさまざまな組み合わせで指定された名前およびライブラリー情報があります。 スカラー・サブフィールドの XML データを作成する場合には、属性または要素のいずれかを自由に使用して XML 文書を設計できます。
- 複雑なデータ構造
D qualname DS QUALIFIED D name 10A D lib 10A D dtaaraInfo DS QUALIFIED D dtaara LIKEDS(qualname) D type 10I 0 D value 100a /free XML-INTO dtaaraInfo %XML(xmldoc : option)XML-INTO dtaaraInfo の XML の例 path オプション <dtaarainfo> <dtaara> <name>data</name> <lib>data</lib> </dtaara> <type>data</type> <value>data</value> </dtaarainfo>ブランク <sys> <obj> <dta> <dtaara> <name>data</name> <lib>data</lib> </dtaara> <type>data</type> <value>data</value> </dta> </obj> </sys>'path=sys/obj/dta' - データ構造の配列があるハンドラー・プロシージャー
D myCommArea DS D total 20u 0 D custType DS qualified D name 50a varying D id_no 10i 0 D city 20a D custHdlr PR D commArea likeds(myCommArea) D custinfo likeds(custType) dim(5) D numElems 10u 0 const /free XML-INTO %HANDLER(custHdlr : myCommArea) %XML(xmldoc : option)注: %HANDLER が指定された場合には path オプションが必要です。
XML-INTO %HANDLER(custHdlr:x) の XML の例 path オプション <info> <cust> <name>data</name> <id_no>data</id_no> <city>data</city> </cust> <cust> <name>data</name> <id_no>data</id_no> <city>data</city> </cust> : : <cust> <name>data</name> <id_no>data</id_no> <city>data</city> </cust> </info>'path=info/cust' - スカラー型の配列があるハンドラー・プロシージャー
D myCommArea DS D total 20u 0 D nameHdlr PR D commArea likeds(myCommArea) D names 10a dim(5) D numNames 10u 0 const /free XML-INTO %HANDLER(nameHdlr : myCommArea) %XML(xmldoc : option)注: %HANDLER が指定された場合には path オプションが必要です。
XML-INTO %HANDLER(nameHdlr:x) の XML の例 path オプション <info> <name>data</name> <name>data</name> <name>data</name> <name>data</name> : : <name>data</name> <name>data</name> </info>'path=info/names'