uCosminexus Business Reporting Processor 開発者ガイド

[目次][用語][索引][前へ][次へ]

4.4.3 数値コンテキスト要素の追加

XBRL2.0に準拠したインスタンス文書に,数値コンテキストを追加するサンプルコードについて説明します。

ここでは,「4.4.2 非数値コンテキスト要素の追加」で非数値コンテキストを追加したXBRL DOMに,さらに数値コンテキストを追加します。数値コンテキスト要素を追加する場合,非数値コンテキストで追加した要素に加えて,さらに単位要素,precision属性,cwa属性が必要になります。

ここで説明するサンプルコードでは,次の内容の数値コンテキストを追加します。表中の「名称」欄のインデントは,コーディング結果のインデントを示しています。

表4-8 数値コンテキストの値

項番 名称 要素/属性
1 コンテキストID 属性 NC01
2 precision 属性 9
3 cwa 属性 false
4 時期 要素 2003-03-31
5 エンティティ(組織) 要素
6   識別子 要素 SAMP
7   スキーム 属性 指定しない
8   セグメント 要素
9     prefecture※1 要素 Tokyo
10 単位 要素
11   計量 要素 iso4217:JPY※2

(凡例)−:値を持つことができません。

注※1 "prefecture"の名前空間URIは"http://www.hitachi.com/2003/XBRL"とします。

注※2 値の単位を「円」とすることを示します。


<この項の構成>
(1) 使用するクラスおよびインターフェース
(2) サンプルコード
(3) コーディング結果

(1) 使用するクラスおよびインターフェース

数値コンテキスト要素の追加で使用するクラスおよびインターフェースを次の表に示します。

表4-9 数値コンテキスト要素の追加で使用するクラスおよびインターフェース

項番 使用するクラスおよびインターフェース 説明
1 com.hitachi.xbrl.types.XBRLQName XML Schemaのデータ型QNameを表します。
2 com.hitachi.xbrl.instance.XBRLMeasure 計量要素を表します。
3 com.hitachi.xbrl.instance.XBRLUnit 単位要素を表します。
4 com.hitachi.xbrl.instance.XBRLMeasureOrOperator 計量要素または演算子要素を表します。
5 com.hitachi.xbrl.types.XBRLDateUnion XBRLのデータ型dateUnionを表します。
6 com.hitachi.xbrl.instance.XBRLPeriod 時期要素を表します。
7 com.hitachi.xbrl.instance.XBRLIdentifier 識別子要素を表します。
8 com.hitachi.xbrl.instance.XBRLSegment セグメント要素を表します。
9 com.hitachi.xbrl.instance.XBRLEntity エンティティ要素を表します。
10 com.hitachi.xbrl.instance.XBRLNumericContext 数値コンテキストを表します。
11 com.hitachi.xbrl.instance.XBRLInstanceDocument インスタンス文書全体を表します。

(2) サンプルコード

数値コンテキストをXBRL DOMに追加するコードは次のとおりです。

// measure要素の作成
XBRLQName currency =
    new XBRLQName("http://www.xbrl.org/2003/iso4217", "JPY");
XBRLMeasure measure = idoc.createMeasure(currency);
// unit要素の作成
XBRLUnit unit = idoc.createUnit((XBRLMeasureOrOperator) measure);
// period要素の作成
XBRLDateUnion date2 = new XBRLDateUnion("2003-03-31");
XBRLPeriod period2 =
    idoc.createPeriod(XBRLPeriod.INSTANT, date2, null, null, null);
// identifier要素の作成
XBRLIdentifier identifier2 = idoc.createIdentifier("", "SAMP");
// segment要素の作成
XBRLSegment segment2 = idoc.createSegment(null);
// prefecture要素を作成
Node container2 = segment2.getContainerNode();
// prefecture要素は複製で作成
Node prefecture2 = prefecture1.cloneNode(true);
container2.appendChild(prefecture2);
// entity要素の作成
XBRLEntity entity2 = idoc.createEntity(identifier2, segment2);
 
// 数値コンテキストの作成
XBRLNumericContext numericContext =
    idoc.createNumericContext(
        entity2,
        period2,
        unit,
        null,   // scenario要素なし
        9,      // precision属性 : precision='9'
        false); // cwa属性 : cwa='false'
// インスタンス文書に数値コンテキストを追加
idoc.addContext(numericContext);

(3) コーディング結果

コーディング結果として,生成されるインスタンス文書は次のとおりです。

<xbrli:numericContext cwa="false" id="NC01" precision="9">
    <xbrli:entity>
        <xbrli:identifier scheme="">SAMP</xbrli:identifier>
        <xbrli:segment>
            <prefecture xmlns="http://www.hitachi.com/2003/XBRL">Tokyo</prefecture>
        </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
        <xbrli:instant>2003-03-31</xbrli:instant>
    </xbrli:period>
    <xbrli:unit>
        <xbrli:measure>iso4217:JPY</xbrli:measure>
    </xbrli:unit>
</xbrli:numericContext>