XMLドキュメントの更新をする場合のXMLアクセスルーチンの呼び出し順を次に示します。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (X)>
<!ELEMENT X (A,B?)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT B (#PCDATA)>
]>
<root/>
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="X">
<Group elemName="X" update="yes">
<Item elemName="A" size="5"/>
<Item elemName="B" size="5"/>
</Group>
</BaseElement>
</Interface>
01 X.
02 A PIC X(5).
02 B PIC X(5).
:
* open
MOVE 'U' TO XML-MODE.
MOVE 'data.xml' TO FILE-NAME.
MOVE 8 TO XML-FILE-NAME-LENGTH.
COMPUTE XML-FILE-NAME = FUNCTION ADDR(FILE-NAME).
CALL 'CBLXML-OP-EXAMPLE' …1.
USING XML-FILE-NAME
XML-FILE-NAME-LENGTH
XML-MODE
XML-POINTER
RETURNING CBLXML-RETURN-CODE.
* read
CALL 'CBLXML-RD-EXAMPLE-X' …2.
USING XML-POINTER X
RETURNING CBLXML-RETURN-CODE.
MOVE 'new A' TO A.
MOVE 'new B' TO B.
* write
CALL 'CBLXML-WR-EXAMPLE-X' …3.
USING XML-POINTER X
RETURNING CBLXML-RETURN-CODE.
* close
CALL 'CBLXML-CL-EXAMPLE' …4.
USING XML-POINTER
RETURNING CBLXML-RETURN-CODE.
:
XMLドキュメント
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<X>
<A>AAA01</A>
<B>BBB01</B>
</X>
</root>
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<X>
<A>new A</A>
<B>new B</B>
</X>
</root>
CBLXML-OP-xyz ("U"更新モードでXMLドキュメントを開く)
CBLXML-RD-xyz-row (1回目のrow要素を入力する)
CBLXML-RD-xyz-row (2回目のrow要素を入力する)
CBLXML-RD-xyz-row (3回目のrow要素を入力する)
ADD 1 TO QUANTITY OF ROW (更新したい要素に値を指定する)
CBLXML-WR-xyz-row (3回目のrow要素を更新する)
CBLXML-CL-xyz (XMLドキュメントを閉じる)
update属性に"yes"を指定したGroup要素をelemName属性で対応づけた場合,Group要素以下が更新の対象になります。cobName属性だけで対応づけた場合は,Group要素の直下のGroup要素,およびItem要素以下が更新の対象となります。
次に,elemName属性で対応づけた場合と,cobName属性で対応づけた場合の例を示します。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (X)>
<!ELEMENT X (A,B)>
<!ELEMENT A (#PCDATA)>
<!ELEMENT B (#PCDATA)>
]>
<root/>
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="X">
<Group elemName="X" update="yes">
<Item elemName="A" size="5"/>
<Item elemName="B" size="5"/>
</Group>
</BaseElement>
</Interface>
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="X">
<Group cobName="X" update="yes">
<Item elemName="A" size="5"/>
<Item elemName="B" size="5"/>
</Group>
</BaseElement>
</Interface>
01 X.
02 A PIC X(5).
02 B PIC X(5).
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<X>
<A>AAA</A>
<!-- COMMENT -->
<B>BBB</B>
</X>
</root>
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
<X>
<A>New A</A>
<B>New B</B>
</X>
</root>
<root>
<X>
<A>New A</A>
<!-- COMMENT -->
<B>New B</B>
</X>
</root>