D info DS QUALIFIED
D type 25A VARYING
D qty 10I 0
D price 7P 3
<abc:info xmlns:abc="http://www.abc.xyz">
<abc:type>Chair</abc:type>
<abc:qty>3</abc:qty>
<abc:price>79.99</abc:price>
</abc:info>
この XML 文書内の名前 (abc:type など) を RPG サブフィールド名に使用することはできません。
オプション ns=remove は、 XML-INTO 命令が、一致するサブフィールドまたは path オプション内に 指定された名前を検索する前に、名前空間 (abc) とコロンが XML 名から除去 されることを指定します。
XML 名 abc:type は、名前空間 abc: が除去された後は、RPG サブフィールド TYPE に 一致します。
xml-into info %xml('info1.xml'
: 'doc=file ns=remove');
// info.type = 'Chair'
// info.qty = 3
// info.price = 79.99
D info DS QUALIFIED
D abc_type 25A VARYING
D def_type 25A VARYING
D abc_qty 10I 0
D abc_price 7P 3
<abc:info xmlns:abc="http://www.abc.xyz"
xmlns:def="http://www.def.xyz">
<abc:type>Chair</abc:type>
<abc:qty>3</abc:qty>
<def:type>Modern</def:type>
<abc:price>79.99</abc:price>
</abc:info>
この XML 文書には、名前空間 abc が付いている名前 abc:type が含まれています。
また、この XML 文書には、名前空間 def が付いている名前 def:type も含まれています。このケースでオプション namespace=remove を 使用することはできません。もし使用すると、2 つの異なる XML 要素の 名前が、1 つの RPG サブフィールド TYPE に一致することになるからです。
オプション ns=merge が指定されます。これは、一致するサブフィールドを XML-INTO 命令が検索する前に、 名前空間 (abc) と XML 名の残りの部分を、名前の 2 つの部分を下線で 区切ってマージすることを指示します。
名前空間 abc と type がマージされた後、 名前 abc_type は RPG サブフィールド ABC_TYPE と 一致します。名前 def_type と RPG サブフィールド DEF_TYPE は、XML 名の 2 つの部分がマージされた後に 一致します。
データ構造名 info は、 マージされた XML 名 abc_info と一致しないため、path オプション が指定される必要があります。マージされた名前 abc_info が path オプション内で使用 されます。
このタイプの XML 文書を処理する別の方法については、名前空間接頭部オプションを 参照してください。
xml-into info %xml('info2.xml'
: 'doc=file ns=merge path=abc_info');
// info.abc_type = 'Chair'
// info.def_type = 'Modern'
// info.abc_qty = 3
// info.abc_price = 79.99