7.2.9 属性の入出力
属性の入出力動作は,属性のデフォルト指定によって異なります。
この節では,属性のデフォルト指定と属性の入出力動作の関係を表にして説明します。また,属性のデフォルト指定および属性値の入力動作についての注意事項を説明したあとに,属性の入力例と出力例を示します。
- 〈この項の構成〉
(1) 属性のデフォルト指定値と属性の入力
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) 属性のデフォルト指定値と属性の出力
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で対応づけされていない場合の属性の入出力
ATTLIST属性のデフォルト指定 |
XMLドキュメントの入力 |
XMLドキュメントの出力 |
---|---|---|
#REQUIRED※ |
無視する。 |
空の属性値(attr = "")を出力する。 |
#IMPLIED |
無視する。 |
属性を出力しない。 |
値 |
無視する。 |
属性を出力しない。 |
#FIXED 値 |
無視する。 |
属性を出力しない。 |
- 注※
-
属性値のデフォルト指定が#REQUIREDの場合は,必ずその属性をDDFで対応づけてください。DDFで対応づけていない場合,適正な属性値が出力されません。
DDFで対応づけた属性のデフォルト指定に#REQUIREDを使用した場合の指定例については,「(4) 属性のデフォルト指定時の注意事項」を参照してください。
(4) 属性のデフォルト指定時の注意事項
属性のデフォルト指定を使用する場合の注意事項を次に示します。
-
属性値の入出力は,属性の型には依存しません。属性値として記述された文字列は属性の型には関係なくCOBOLデータ項目に入出力されます。
-
ATTLIST属性のデフォルト指定では,英数字項目および日本語項目の場合は160文字,数字項目の場合は18けた(符号,小数点は含まない)を指定してください。
-
XMLドキュメント妥当性チェック機能で属性値が適正かどうかをチェックできるのは,属性値の入力時だけです。属性値の出力時に値が適正かどうかをチェックすることはできません。
XMLドキュメント妥当性チェック機能については,「7.2.8 入力XMLドキュメントの妥当性チェック機能」を参照してください。
-
属性のデフォルト指定に#REQUIREDを使用して属性値に空文字列が出力されると,出力された属性値が不正と判断される属性があります。常に適正な属性値を出力するために,#REQUIREDでデフォルト指定をする場合は,その属性をDDFで対応づける必要があります。
DDFで対応づけた属性を#REQUIREDで指定した場合の指定例を次に示します。
- (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) 属性値の入力動作についての注意事項
-
type属性に"alphanumeric"を指定し,入力する値の空白文字(スペース,タブおよび改行)はスペース(X'20')に置き換えてCOBOLデータ項目に読み込まれます。
-
type属性に"numeric","packed","binary","float","double"を指定し,入力する数値の前後に空白文字(スペース,タブおよび改行)がある場合,空白文字(スペース,タブおよび改行)を無視して数値だけが読み込まれます。
(入力例)
<Item>△12△</Item>
注
△は,数値の前後に空白文字(スペース,タブおよび改行)がある場合を表します。
-
type属性に"numeric","packed","binary","float","double"を指定し,入力する数値の中に空白文字(スペース,タブおよび改行)がある場合,不当な数値であるため結果は不定となります。
(入力例)
<Item>1△2</Item>
注
△は,数値の中に空白文字(スペース,タブおよび改行)がある場合を表します。
(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) 属性の出力例
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>
- (説明)
-
-
COBOLデータ項目の値がemptyValueの値に等しいため,属性は出力されません。
-
#FIXEDが指定されているため,COBOLデータ項目の値に関係なく"def"が出力されます。
-
trim="no"が指定されているため,前に0が付いて出力されます。
-
DDFで対応づけてはいませんが,#REQUIREDが指定されているため,空文字列が出力されます。
-
DDFで対応づけていないため,attr52は出力されません。
-