XML ワイヤー形式は、メッセージ中のヌル値の処理をサポートしています。
XML の「ヌルのエンコード方式」プロパティーは、メッセージ・セットの場合だけ設定され、メッセージ・セット中で定義されているすべてのオブジェクトに適用されます。
以下の 2 つのプロパティーを使用して、XML ワイヤー・フォーマット内の NULL の数値エンコードと非数値エンコードを表すことができます。
- 数値のヌルのエンコード方式
- 非数値のヌルのエンコード方式
これらは、ヌルの数値エンコードと非数値エンコードをそれぞれ表します。
- 数値データ・タイプは以下のとおりです。
- 10 進スキーマ・タイプ: decimal、integer、negativeInteger、nonNegativeInteger、nonPositiveInteger、positiveInteger
- 浮動小数点スキーマ・タイプ: double、float
- 整数スキーマ・タイプ: byte、int、long、short、unsignedByte、unsignedInt、unsignedLong、unsignedShort
- 非数値データ・タイプは以下のとおりです。
- バイナリー・スキーマ・タイプ: base64Binary、hexBinary
- ブール・スキーマ・タイプ: Boolean
- 日時スキーマ・タイプ: date、dateTime、gDay、gMonth、gMonthDay、gYear、gYearMonth、time
- ストリング・スキーマ・タイプ: anyURI、duration、ENTITIES、ENTITY、ID、IDREF、IDREFS、language、Name、NCName、NMTOKEN、NMTOKENS、normalizedString、NOTATION、QName、string、token
これらの個々のエンコードには以下の列挙値があります。
- NULLEmpty (デフォルト)
- NULLValue
- NULLXMLSchema
- NULLValueAttribute
- NULLAttribute (推奨されない)
- NULLElement (推奨されない)
NULLEmpty、NULLXMLSchema、およびNULLValueAttribute の追加の情報を提供する必要はありませんが、NULLValue、NULLAttribute、または NULLElement を選択する場合には、「数値のヌル値のエンコード方式」および「非数値のヌル値のエンコード方式」メッセージ・セット・プロパティー内に、追加の値を定義し、NULL 条件を表すよう割り当てなければなりません
以下の表は、それぞれのエンコードの働きを示しています。
エンコードごとに、XML の例で、エレメント myElem に値 NULL が与えられます。
注: - 「ブールの True 値」の値が使用されます。
- XML のレンダリング・オプションで指定されている XMLElementAttrVal エレメントのレンダリングの場合だけ有効です。
エレメントをこのようにレンダー対象とマーキングしてヌルに設定することは、エレメントの値を詳述するエレメント属性を除去することと同じです。
- XML のレンダリング・オプションで指定されている XMLElementAttrIdVal エレメントのレンダリングの場合だけ有効です。
エレメントをこのようにレンダー対象とマーキングしてヌルに設定することは、エレメントの値を詳述するエレメント属性を除去する (ただし、属性 ID は除去しない) ことと同じです。
数値のヌルのエンコード方式
非数値のヌルのエンコード方式
|
ヌル数値の値のエンコードヌル非数値の値のエンコード
|
XML 例 |
NULLEmpty |
|
<myElem/>
<myElem></myElem>
|
NULLValue |
zzz |
<myElem>zzz</myElem> |
NULLXMLSchema |
|
<myElem xsi:nil='true'/>1 |
NULLValueAttribute |
|
<myElem></myElem>2
<parent id="myElem"></parent>3
|
NULLElement |
null4 |
<myElem><null/></myElem> |
NULLAttribute |
null4 |
<myElem null='true'/>1 |
注: - 属性は true に評価される必要があります。そのため、値は "true"、"1"、または「ブールの True 値」プロパティーでなければなりません。
- XML のレンダリング・オプションで指定されている XMLElementAttrVal エレメントのレンダリングの場合だけ有効です。
エレメントをこのようにレンダー対象とマーキングしてヌルに設定することは、エレメントの値を提供するエレメント属性を除去することと同じです。
- XML のレンダリング・オプションで指定されている XMLElementAttrIdVal エレメントのレンダリングの場合だけ有効です。
エレメントをこのようにレンダー対象とマーキングしてヌルに設定することは、エレメントの値を提供するエレメント属性を除去する (ただし、エレメント名を提供する属性は除去しない) ことと同じです。
- NULLElement と NULLAttribute はどちらも推奨されません。
提供されるエレメントまたは属性名には、ネーム・スペース URI または接頭部を含めてはなりません。
メッセージ・セットのネーム・スペースを使用可能にしている場合、名前は任意のネーム・スペースに一致します。
NULLEmpty および NULLValAttr の追加の説明を提供する必要はありませんが、
NULLValue、NULLAttribute、
または NULLElement を選択する場合には、
「ヌル数値の値のエンコード」および「ヌル非数値の値のエンコード」メッセージ・セット・プロパティー内で、NULL 条件を表すように
割り当てられる値をさらに定義しなければなりません (上の表を参照)。