属性の入出力動作は,属性のデフォルト指定によって異なります。
この節では,属性のデフォルト指定と属性の入出力動作の関係を表にして説明します。また,属性のデフォルト指定および属性値の入力動作についての注意事項を説明したあとに,属性の入力例と出力例を示します。
表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 |
表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が設定される) | 出力しない |
表7-5 属性がDDFで対応づけされていない場合
ATTLIST属性のデフォルト指定 | XMLドキュメントの入力 | XMLドキュメントの出力 |
---|---|---|
#REQUIRED※ | 無視する。 | 空の属性値(attr = "")を出力する。 |
#IMPLIED | 無視する。 | 属性を出力しない。 |
値 | 無視する。 | 属性を出力しない。 |
#FIXED 値 | 無視する。 | 属性を出力しない。 |
属性のデフォルト指定を使用する場合の注意事項を次に示します。
<?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/>
<?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>
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).
次に示す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 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>