• 検索結果がありません。

省略可能な要素へのアクセス

ドキュメント内 COBOL2002 XML連携機能ガイド (ページ 168-171)

MOVE 30 TO AGE

7.2  実行時の動作に関する注意事項

7.2.1  省略可能な要素へのアクセス

XML では,省略可能な要素を定義できます。省略可能な要素を定義するには,要素の名称の最後に(?)

を追加します。

例えば,次のような DTD が定義された XML ドキュメントでは,要素「group1」の下位に要素「item1」

は必要ですが,要素「item2」はあってもなくてもかまいません。

(省略可能な要素を含む DTD の例)

<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE table [

<!ELEMENT table (group1)>

<!ELEMENT group1 (item1, item2?)>

<!ELEMENT item1 (#PCDATA)>

<!ELEMENT item2 (#PCDATA)>

]>

<table/>

省略可能な要素にアクセスする場合,DDF は次のようにすべての要素にアクセスできるように記述する必 要があります。

(省略可能な要素にアクセスする DDF の例)

• emptyValue 属性および accessInfo 属性の指定がない場合

<?xml version="1.0" encoding="Shift_JIS"?>

<Interface interfaceName="EXAMPLE" >

<BaseElement elemName="group1">

<Group elemName="group1">

<Item elemName="item1" type="alphanumeric"

size="30"/>

<Item elemName="item2" type="alphanumeric"

size="30"/>

</Group>

</BaseElement>

</Interface>

• emptyValue 属性の指定がある場合

<?xml version="1.0" encoding="Shift_JIS"?>

<Interface interfaceName="EXAMPLE" >

<BaseElement elemName="group1">

<Group elemName="group1">

<Item elemName="item1" type="alphanumeric"

size="30"/>

<Item elemName="item2" type="alphanumeric"

size="30" emptyValue="EP"/>

</Group> </BaseElement></Interface>

• accessInfo 属性の指定がある場合

<?xml version="1.0" encoding="Shift_JIS"?>

<Interface interfaceName="EXAMPLE" accessInfo="yes">

<BaseElement elemName="group1">

<Group elemName="group1">

<Item elemName="item1" type="alphanumeric"

size="30"/>

<Item elemName="item2" type="alphanumeric"

size="30"/>

</Group>

</BaseElement>

</Interface>

また,省略可能な要素は,XML 対応 COBOL プログラムでは次のように扱われます。

(1) 省略可能な要素の入力処理

省略可能な要素を省略した XML ドキュメントを入力した場合,Item 要素に指定した属性によって,対応 する COBOL データ項目に入力される値,およびアクセス情報フラグに設定される値が異なります。省略 可能な要素を持つ XML ドキュメントを入力した場合の,Item 要素に指定した属性と COBOL データ項目 に入力される値の関係を表 7-1 に示します。

表 7‒1 省略可能な要素の入力処理

省略可能な要素に対応する Item 要素の emptyValue 属性,

emptyContentValue 属性,accessInfo 属性 入力 XML ドキュメン トの省略可能な要素

COBOL データ項目(アクセス 情報フラグ)の入力値 emptyValue emptyContentVal

ue

accessInfo="ye s"

○ × × 要素値あり 要素値

空要素 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)

(凡例)

○:指定あり

×:指定なし 注

• emptyValue 属性と accessInfo 属性を同時に指定した場合,accessInfo 属性の指定値が優先され,

emptyValue 属性の指定は無効となります。

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

注※1

type 属性の指定が"alphanumeric"または"national"の場合は SPACE が設定されます。

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

注※2

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

(2) 省略可能な要素の出力処理

省略可能な要素に対応した COBOL データ項目,アクセス情報フラグに特定の値を設定することで,省略 可能な要素を XML ドキュメントに出力します。Item 要素の属性の指定と COBOL データ項目,アクセス 情報フラグに設定する値によって出力する XML ドキュメントの省略可能な要素の関係を表 7-2 に示しま す。

表 7‒2 省略可能な要素の出力処理

省略可能な要素に対応する Item 要素の emptyValue 属性,

emptyContentValue 属性,accessInfo 属性 COBOL データ項目(ア

クセス情報フラグ)の値 出力 XML ドキュメント emptyValue emptyContentValue accessInfo="ye

s"

○ × × 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 属性の省略値を設定します。

ドキュメント内 COBOL2002 XML連携機能ガイド (ページ 168-171)