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' |