2.10.2 PTVIのアイテムの作成方法

PTVIの数値アイテム(fractionItemType型を除く)の作成方法には,次の2とおりがあります。

どちらの方法で作成するかは,プロパティcbrp.parse.validate.full-checking.PTVI.rounded-item-valueで指定します。

指定方法の詳細については,「4.16.2(19) cbrp.parse.validate.full-checking.PTVI.rounded-item-value」を参照してください。

なお,fractionItemType型の数値アイテム,または非数値アイテムを作成する場合には,プロパティcbrp.parse.validate.full-checking.PTVI.rounded-item-valueでの指定に関係なく,インスタンス文書に記述されている値で作成します。

<この項の構成>
(1) 検証に使用した概数を基にアイテムを作成する
(2) essence-aliasアークの検証時に推測されたアイテムを作成する

(1) 検証に使用した概数を基にアイテムを作成する

検証に使用した概数を基にアイテムを作成した場合の例を次に示します。既存アイテム値の丸め処理や,decimals属性値からprecision属性値を推測する方法については,「2.4.2(4) 精度の推測と概数【完全な妥当性検証の場合だけ有効】」を参照してください。

上段がインスタンス文書の記述内容,下段がアイテムの生成結果を示します。

【例1】通常の場合

<item contextRef="c1" precision="4" unitRef="u1">12345</item>

<item contextRef="c1" unitRef="u1" precision="4"
ptv:periodType="instant" ptv:balance="credit">12350</item>

【例2】小数点以下の値がない数値に対し,decimals属性値を記述した場合

<item contextRef="c1" decimals="2" unitRef="u1">12345</item>

<item contextRef="c1" unitRef="u1" precision="7"
ptv:periodType="instant" ptv:balance="credit">12345.00</item>

【例3】指数表記された数値に対し,decimals属性値を記述した場合

<item contextRef="c1" decimals="5" unitRef="u1">0.1E-2</item>

<item contextRef="c1" unitRef="u1" precision="3"
ptv:periodType="instant" ptv:balance="credit">0.00100</item>

【例4】有効数字がない場合
この例では「decimals="3"」という記述に対し,対象となる数値が「0.000123」のため,有効数字がありません。そのため,precision属性値を次のように算出します。

指数部(0)+小数点以下の0の数を負にした値(-3)+decimals値(3)=0

この算出結果によって「precision="0"」が出力されています。この場合,インスタンス文書に記述されている数字のままPTVIに出力されます。

<item contextRef="c1" decimals="3" unitRef="u1">0.000123</item>

<item contextRef="c1" unitRef="u1" precision="0"
ptv:periodType="instant" ptv:balance="credit">0.000123</item>

【例5】有効数字がなく,かつ数値が指数表記の場合
指数表記から展開された値が記述されます。

<item contextRef="c1" decimals="4" unitRef="u1">0.00123e-3</item>

<item contextRef="c1" unitRef="u1" precision="0"
ptv:periodType="instant" ptv:balance="credit">0.00000123</item>

【例6】数値が0で,かつprecision属性値が記述されている場合
この例では「precision="5"」という記述に対し,有効数字がありません。この場合,小数点以下の精度をprecisionの値と仮定して,「0.00000」とします。

<item contextRef="c1" precision="5" unitRef="u1">0.000</item>

<item contextRef="c1" unitRef="u1" precision="5"
ptv:periodType="instant" ptv:balance="credit">0.00000</item>

【例7】数値が0で,かつdecimals属性値が記述されている場合
この例では「decimals="5"」という記述に対し,有効数字がありません。この場合,precision属性値は次のように算出されます。

指数部(0)+小数点以下の0の数を負にした値(0)+decimals値(5)=5

この算出結果によって「precision="5"」と値「0.00000」が出力されています。

<item contextRef="c1" decimals="5" unitRef="u1">0.000</item>

<item contextRef="c1" unitRef="u1" precision="5"
ptv:periodType="instant" ptv:balance="credit">0.00000</item>

【例8】数値0が指数表記されている場合
0が指数表記されている場合には,次のようにdecimals属性値からprecision属性値を推測します。

指数部(0)+小数点以下の0の数を負にした値(5)+decimals値(3)=8

この算出結果によって「precision="8"」と出力されています。

<item contextRef="c1" decimals="3" unitRef="u1">0.00E5</item>

<item contextRef="c1" unitRef="u1" precision="8"
ptv:periodType="instant" ptv:balance="credit">0.00000000</item>

(2) essence-aliasアークの検証時に推測されたアイテムを作成する

拡張機能を使って,essence-aliasアークの検証時に存在しないアイテムを推測した場合,推測したアイテムは,通常のアイテムと同じように属性値などが補完され,PTVIに作成されます。作成される値は,アイテムの種類によって次のように異なります。

また,アイテムは必要最低限の属性だけがPTVIに作成されるため,推測元のアイテムに付いていたid属性などは削除されます。

A→Bへのessence-aliasアークでアイテムAが推測された場合のPTVIの生成結果を次の例に示します。上段はインスタンス文書の記述内容,下段はアイテムの生成結果です。

<B id="item_B" contextRef="c1" precision="3" unitRef="u1">123</B>

<A contextRef="c1" unitRef="u1" precision="3"
ptv:periodType="instant" ptv:balance="credit">123</A>
<B contextRef="c1" unitRef="u1" precision="3"
ptv:periodType="instant" ptv:balance="credit">123</B>