COBOL2002 XML連携機能ガイド


7.2.5 対応づけしない要素の扱い

DTDの要素のうち,COBOLデータ項目に対応づけなかった要素の出力動作について説明します。

対応づけしない要素のうち0回以上の繰り返し要素(*)と省略可能な要素(?)は,BaseElement要素の内側にある場合は出力されません。その他の要素の場合,空要素が出力されます。

また,BaseElement要素の外側にある要素はすべて空要素が出力されます。BaseElement要素の内側および外側にある対応づけしない要素の出力例を次に示します。

(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [  <!ELEMENT root (group1, group2, group3)>
  <!ELEMENT group1 (item1a,  item1b, item1c*)>
  <!ELEMENT item1a  (#PCDATA)>
  <!ELEMENT item1b  (#PCDATA)>
  <!ELEMENT item1c  (#PCDATA)>
  <!ELEMENT group2 (item2a?, item2b+)>
  <!ELEMENT item2a  (#PCDATA)>
  <!ELEMENT item2b  (#PCDATA)>
  <!ELEMENT group3 (item3a | item3b)>
  <!ELEMENT item3a  (#PCDATA)>
  <!ELEMENT item3b  (#PCDATA)>]><root/>

item1a要素をBaseElement要素と対応づける場合の例を次に示します。item1a要素に値を代入し,XMLドキュメントを出力します。この場合,BaseElement要素の外側にある要素はすべて空要素として出力します。

(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
  <BaseElement elemName="item1a" cobName="BE">
    <Item elemName="item1a" type="alphanumeric" size="10"/>
  </BaseElement>
</Interface>
(生成されるCOBOLデータ項目)
01 item1a PIC X(10).
(出力したXMLドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
  <group1>
    <item1a>AAAAAAAAAA</item1a>
    <item1b/>
    <item1c/>
  </group1>
  <group2>
    <item2a/>
    <item2b/>
  </group2>
  <group3>
    <item3a/>
  </group3>
</root>

root要素をBaseElement要素と対応づける場合の例を次に示します。item1a要素に値を代入し,XMLドキュメントを出力します。この場合,BaseElement要素の内側にある要素で0回以上の繰り返し要素(*)と省略可能な要素(?)は出力しません。その他の要素は空要素を出力します。

(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
  <BaseElement elemName="root" cobName="BE">
    <Group elemName="root" cobName="BASE">
      <Group elemName="group1">
        <Item elemName="item1a" type="alphanumeric"
              size="10"/>
      </Group>
    </Group>
  </BaseElement>
</Interface>
(生成されるCOBOLデータ項目)
01 BASE.
 02 group1.
  03 item1a PIC X(10).
(出力したXMLドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?>
<root>
  <group1>
    <item1a>AAAAAAAAAA</item1a>
    <item1b/>
  </group1>
  <group2>
    <item2b/>
  </group2>
  <group3>
    <item3a/>
  </group3>
</root>