COBOL2002 XML連携機能ガイド

[目次][用語][索引][前へ][次へ]

7.2.9 属性の入出力

属性の入出力動作は,属性のデフォルト指定によって異なります。

この節では,属性のデフォルト指定と属性の入出力動作の関係を表にして説明します。また,属性のデフォルト指定および属性値の入力動作についての注意事項を説明したあとに,属性の入力例と出力例を示します。

<この項の構成>
(1) 属性のデフォルト指定値と属性の入力
(2) 属性のデフォルト指定値と属性の出力
(3) 属性がDDFで対応づけされていない場合の属性の入出力
(4) 属性のデフォルト指定時の注意事項
(5) 属性値の入力動作についての注意事項
(6) 属性の入力例
(7) 属性の出力例

(1) 属性のデフォルト指定値と属性の入力

表7-3 属性のデフォルト指定値と属性の入力動作

ATTLIST属性のデフォルト指定 AttrItem要素のemptyValue属性,emptyContentValue属性,accessInfo属性 入力XMLドキュメントの属性値 COBOLデータ項目(アクセス情報フラグ)の入力値
emptyValue emptyContentValue accessInfo="yes"
#REQUIRED × × 属性あり(値あり) 属性値
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
属性なし emptyValue属性の指定値※2
× 属性あり(値あり) 属性値
属性あり(値なし) emptyContentValue属性の指定値
属性なし emptyValue属性の指定値※2
× × 属性あり(値あり) 属性値
(CBLXML-FLAG-OK)
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
(CBLXML-FLAG-EMPTY)
属性なし type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
(CBLXML-FLAG-MISSING)
#IMPLIED × × 属性あり(値あり) 属性値
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
属性なし emptyValue属性の指定値※2
× 属性あり(値あり) 属性値
属性あり(値なし) emptyContentValue属性の指定値
属性なし emptyValue属性の指定値※2
× × 属性あり(値あり) 属性値
(CBLXML-FLAG-OK)
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
(CBLXML-FLAG-EMPTY)
属性なし type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
(CBLXML-FLAG-MISSING)
× × 属性あり(値あり) 属性値
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
属性なし ATTLIST属性に指定したデフォルト値
× 属性あり(値あり) 属性値
属性あり(値なし) emptyContentValue属性の指定値
属性なし ATTLIST属性に指定したデフォルト値
× × 属性あり(値あり) 属性値
(CBLXML-FLAG-OK)
属性あり(値なし) type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1
(CBLXML-FLAG-EMPTY)
属性なし ※3
#FIXED 値 × × 属性あり(値あり) ATTLIST属性に指定したデフォルト値
属性あり(値なし)
属性なし
× 属性あり(値あり) ATTLIST属性に指定したデフォルト値
属性あり(値なし)
属性なし
× × 属性あり(値あり) ATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-OK)
属性あり(値なし) ※4
属性なし ※5

(凡例)
○:指定あり
×:指定なし

  • emptyValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyValue属性の指定は無効となります。
  • emptyContentValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyContentValue属性の指定は無効となります。

注※1
type属性の指定が"alphanumeric"または"national"の場合はSPACEが設定されます。
type属性の指定が"numeric","packed","binary","float",または"double"の場合はZEROが設定されます。

注※2
emptyValue属性の指定がない場合,emptyValue属性の省略値が設定されます。

注※3
DTDあり
ATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-OK)
DTDなし
cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-MISSING)

注※4
DTDあり
ATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-EMPTY)
DTDなし
cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-EMPTY)

注※5
DTDあり
ATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-OK)
DTDなし
cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値
(CBLXML-FLAG-MISSING)

(2) 属性のデフォルト指定値と属性の出力

表7-4 属性のデフォルト指定値と属性の出力動作

ATTLIST属性のデフォルト指定 AttrItem要素のemptyValue属性,emptyContentValue属性,accessInfo属性 COBOLデータ項目(アクセス情報フラグ)の出力値 出力XMLドキュメントでの属性
emptyValue emptyContentValue accessInfo="yes"
#REQUIRED × × emptyValue属性の指定値以外の値 指定した値の属性を出力する
emptyValue属性の指定値 空の属性を出力する
× emptyValue属性,emptyContentValue属性の指定値以外の値 指定した値の属性値
emptyContentValue属性の指定値 空の属性値
emptyValue属性の指定値 空の属性値
emptyContentValue属性とemptyValue属性が同じ指定値 空の属性値
× × 値(アクセス情報フラグにCBLXML-FLAG-OKが設定される) 指定した値の属性値
値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される) 空の属性値
値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される) 空の属性値
#IMPLIED × × emptyValue属性の指定値以外の値 指定した値の属性値
emptyValue属性の指定値 出力しない
× emptyValue属性,emptyContentValue属性の指定値以外の値 指定した値の属性値
emptyContentValue属性の指定値 空の属性値
emptyValue属性の指定値 出力しない
emptyContentValue属性とemptyValue属性が同じ指定値 出力しない
× × 値(アクセス情報フラグにCBLXML-FLAG-OKが設定される) 指定した値の属性値
値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される) 空の属性値
値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される) 出力しない
× × emptyValue属性の指定値以外の値 指定した値の属性値
emptyValue属性の指定値 出力しない
× emptyValue属性,emptyContentValue属性の指定値以外の値 指定した値の属性値
emptyContentValue属性の指定値 空の属性値
emptyValue属性の指定値 出力しない
emptyContentValue属性とemptyValue属性が同じ指定値 出力しない
× × 値(アクセス情報フラグにCBLXML-FLAG-OKが設定される) 指定した値の属性値
値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される) 空の属性値
値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される) 出力しない
#FIXED 値 × × emptyValue属性の指定値以外の値 属性のデフォルト指定値
emptyValue属性の指定値 出力しない
× emptyValue属性,emptyContentValue属性の指定値以外の値 属性のデフォルト指定値
emptyContentValue属性の指定値 空の属性値
emptyValue属性の指定値 出力しない
emptyContentValue属性とemptyValue属性が同じ指定値 出力しない
× × 値(アクセス情報フラグにCBLXML-FLAG-OKが設定される) 属性のデフォルト指定値
値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される) 空の属性値
値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される) 出力しない

(凡例)
○:指定あり
×:指定なし

  • emptyValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyValue属性の指定は無効となります。
  • emptyContentValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyContentValue属性の指定は無効となります。

注※
emptyValue属性の指定がない場合,emptyValue属性の省略値を設定します。

(3) 属性がDDFで対応づけされていない場合の属性の入出力

表7-5 属性がDDFで対応づけされていない場合

ATTLIST属性のデフォルト指定 XMLドキュメントの入力 XMLドキュメントの出力
#REQUIRED 無視する。 空の属性値(attr = "")を出力する。
#IMPLIED 無視する。 属性を出力しない。
無視する。 属性を出力しない。
#FIXED 値 無視する。 属性を出力しない。

注※
属性値のデフォルト指定が#REQUIREDの場合は,必ずその属性をDDFで対応づけてください。DDFで対応づけていない場合,適正な属性値が出力されません。
DDFで対応づけた属性のデフォルト指定に#REQUIREDを使用した場合の指定例については,「(4) 属性のデフォルト指定時の注意事項」を参照してください。

(4) 属性のデフォルト指定時の注意事項

属性のデフォルト指定を使用する場合の注意事項を次に示します。

(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
 <!DOCTYPE table [
    <!ELEMENT table (item1, item2, item3, item4, item5)>
  <!ELEMENT item1 EMPTY>
  <!ELEMENT item2 EMPTY>
  <!ELEMENT item3 EMPTY>
  <!ELEMENT item4 EMPTY>
  <!ELEMENT item5 EMPTY>
  <!ATTLIST item1 attr11 CDATA #REQUIRED>
  <!ATTLIST item1 attr12 CDATA #IMPLIED>
  <!ATTLIST item1 attr13 CDATA "abc" >
  <!ATTLIST item1 attr14 CDATA #FIXED "def">
  <!ATTLIST item2 attr21 ID #IMPLIED >
  <!ATTLIST item2 attr22 IDREF #IMPLIED>
  <!ATTLIST item2 attr23 IDREFS #IMPLIED>
  <!ATTLIST item2 attr24 NMTOKEN #IMPLIED>
  <!ATTLIST item2 attr25 NMTOKENS #IMPLIED>
  <!ATTLIST item3 attr31 (blue|red|yellow) #IMPLIED>
  <!ATTLIST item4 attr41 CDATA #IMPLIED>
  <!ATTLIST item5 attr51 CDATA #REQUIRED>
  <!ATTLIST item5 attr52 CDATA #IMPLIED>
]>
<table/>

(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
  <BaseElement elemName="table">
    <Group cobName="grp1">
      <AttrItem elemName="item1" attrName="attr11"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item1" attrName="attr12"
      type="alphanumeric" emptyValue="xxx" size="10"/>
      <AttrItem elemName="item1" attrName="attr13"
      type="alphanumeric" emptyValue="yyy" size="10"/>
      <AttrItem elemName="item1" attrName="attr14"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr21"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr22"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr23"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr24"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr25"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item3" attrName="attr31"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item4" attrName="attr41"
      type="numeric" trim="no" size="4"/>
    </Group>
  </BaseElement>
</Interface>

(生成されるCOBOLデータ項目)
01 grp1.
 02 item1-attr11 PIC X(10).
 02 item1-attr12 PIC X(10).
 02 item1-attr13 PIC X(10).
 02 item1-attr14 PIC X(10).
 02 item2-attr21 PIC X(10).
 02 item2-attr22 PIC X(10).
 02 item2-attr23 PIC X(10).
 02 item2-attr24 PIC X(10).
 02 item2-attr25 PIC X(10).
 02 item3-attr31 PIC X(10).
 02 item4-attr41 PIC 9(4).

(5) 属性値の入力動作についての注意事項

(6) 属性の入力例

次に示すXMLドキュメントを入力した場合にCOBOLデータ項目に格納される値を表 7-6に示します。

(入力ドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?>
<table>
 <item1 attr11="aaa" attr14="ddd"/>
 <item2 attr21="id1" attr22="id1" attr23="id1 id1"
        attr24="1cm" attr25="1cm 2cm"/>
 <item3 attr31="red"/>
 <item4 attr41="nan"/>
 <item5 attr51="foo"/>
</table>

表7-6 COBOLデータ項目に格納される値

COBOLデータ項目 備考
attr11 aaa
attr12 xxx 属性が存在しないため,emptyValueで指定した値が格納される。
attr13 abc 属性が存在しないため,DTDのデフォルト値が格納される。
attr14 def #FIXEDが指定されているため,ドキュメント上の属性値に関係なくDTDのデフォルト値が格納される。
attr21 id1
attr22 id1
attr23 id1△id1
attr24 1cm
attr25 1cm△2cm
attr31 red
attr41 0000 数字項目に文字列が入力されたため,0が格納される。

(凡例)
△:半角空白文字

(7) 属性の出力例

表7-7 COBOLデータ項目に設定した出力値

COBOLデータ項目
attr11 aaa
attr12 xxx
attr13 zzz
attr14 bbb
attr21 id1
attr22 id1
attr23 id1△id1
attr24 1cm
attr25 1cm△2cm
attr31 blue
attr41 0012

(凡例)
△:半角空白文字

表 7-7に示した値をCOBOLデータ項目に設定した場合,次のようなXMLドキュメントが出力されます。

(出力ドキュメント)
<table>
 <item1 attr11="aaa"attr13="zzz"attr14="def"/>    …1.
        attr13="zzz"
        attr14="def"/>           …2.
 <item2 attr21="id1"
        attr22="id1"
        attr23="id1 id1"
        attr24="1cm"
        attr25="1cm 2cm"
 <item3 attr31="blue"/>
 <item4 attr41="0012"/>          …3.
 <item5 attr51=""                …4.
 />
                                 …5.
</table>

(説明)
  1. COBOLデータ項目の値がemptyValueの値に等しいため,属性は出力されません。
  2. #FIXEDが指定されているため,COBOLデータ項目の値に関係なく"def"が出力されます。
  3. trim="no"が指定されているため,前に0が付いて出力されます。
  4. DDFで対応づけてはいませんが,#REQUIREDが指定されているため,空文字列が出力されます。
  5. DDFで対応づけていないため,attr52は出力されません。