uCosminexus Business Reporting Processor 開発者ガイド

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

4.11.1 多次元データを含んだコンテキスト要素の追加

XBRL Dimensions1.0に準拠したインスタンス文書のXBRL DOMに多次元データを含んだコンテキスト要素を追加するサンプルコードについて説明します。

ここでは,<xbrldi:explicitMember>要素を追加するサンプルコードについて説明します。なお,<xbrldi:typedMember>要素を追加する場合は,<xbrldi:explicitMember>要素を<xbrldi:typedMember>要素に読み替えてください。

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

表4-46 多次元データを含んだコンテキスト要素

項番 名称 要素/属性
1 コンテキストID 属性 C01およびC02
2 時期 要素 2008-09-30
3 エンティティ(組織) 要素
4   識別子 要素 SAMP
5   スキーム 属性 "http://www.hitachi.com/2008/XBRL"
6   セグメント 要素
7     explicitMember dimension 要素 p0:Tokyo,p0:LCおよびp0:Plasma

(凡例)−:値を保持しません。

注※ プリフィックスp01の名前空間URIは"http://www.hitachi.com/2008/XBRL/dim/sample"とします。なお,プリフィックスと名前空間URIの組み合わせは,あらかじめcom.hitachi.xbrl.util.XBRLNamespaceDeclarationクラスで作成し,インスタンス文書に追加してください。


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

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

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

表4-47 多次元データを含んだコンテキスト要素の追加で使用するクラスおよびインターフェース

項番 使用するクラスおよびインターフェース 説明
1 com.hitachi.xbrl.instance.XBRLInstanceDocument インスタンス文書全体を表します。
2 com.hitachi.xbrl.types.XBRLQName XML Schemaのデータ型QNameを表します。
3 com.hitachi.xbrl.instance.XBRLSegment セグメント要素を表します。
4 com.hitachi.xbrl.instance.XBRLExplicitMember <xbrldi:explicitMember>要素を表します。
5 com.hitachi.xbrl.instance.XBRLIdentifier 識別子要素を表します。
6 com.hitachi.xbrl.instance.XBRLEntity エンティティ要素を表します。
7 com.hitachi.xbrl.types.XBRLDateUnion XBRLのデータ型dateUnionを表します。
8 com.hitachi.xbrl.instance.XBRLPeriod 時期要素を表します。
9 com.hitachi.xbrl.instance.XBRLContext2 XBRL2.1のコンテキスト要素を表します。
10 com.hitachi.xbrl.instance.XBRLContext コンテキスト要素を表します。

(2) サンプルコード

多次元データを含んだコンテキスト要素をXBRL DOMに追加するコードは次のとおりです。

        /*
         * ここからアイテム(売上高)の作成
         */
        XBRLQName LC = new XBRLQName("http://www.hitachi.com/2008/XBRL/dim/sample", "LC");
        XBRLQName plasma = new XBRLQName("http://www.hitachi.com/2008/XBRL/dim/sample", "Plasma");
        
        // 東京の売上
        XBRLQName tokyo = new XBRLQName("http://www.hitachi.com/2008/XBRL/dim/sample", "Tokyo");
        BigDecimal salesLC = new BigDecimal("10000000");
        createItem(idoc, unit, tokyo, LC, salesLC);
 
        BigDecimal salesPlasma = new BigDecimal("8000000");
        createItem(idoc, unit, tokyo, plasma, salesPlasma);
                    :
                    :
                    :
 
private static void createItem(
        XBRLInstanceDocument idoc,
        XBRLUnit2 unit,
        XBRLQName distValue,
        XBRLQName prodValue,
        BigDecimal salesValue) {
    
    /*
     * ここからコンテキストの作成
     */
 
    // segment要素の作成
    XBRLSegment segment = idoc.createSegment();
 
    // explicitMember要素の作成 - DistDim
    XBRLQName distDim = new XBRLQName("http://www.hitachi.com/2008/XBRL/dim/sample", "DistDim");
    XBRLExplicitMember distExplicit = idoc.createExplicitMember(distDim, distValue);
    segment.appendDimensionMember(distExplicit);
 
    // explicitMember要素の作成 - ProductDim
    XBRLQName prodDim = new XBRLQName("http://www.hitachi.com/2008/XBRL/dim/sample", "ProductDim");
    XBRLExplicitMember prodExplicit = idoc.createExplicitMember(prodDim, prodValue);
    segment.appendDimensionMember(prodExplicit);
 
    // identifier要素の作成
    XBRLIdentifier identifier =
        idoc.createIdentifier(
            "http://www.hitachi.com/2008/XBRL",
            "SAMP");
 
    // entity要素の作成
    XBRLEntity entity = idoc.createEntity(identifier, segment);
 
    // period要素の作成
    XBRLDateUnion date = new XBRLDateUnion("2008-09-30");
    XBRLPeriod period = idoc.createPeriod(date);
    
    // コンテキストの作成
    XBRLContext2 context = idoc.createContext(entity, period, null);
    // インスタンス文書にコンテキストを追加
    idoc.addContext((XBRLContext) context);

(3) コーディング結果

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

<xbrli:context id="C01">
    <xbrli:entity>
     <xbrli:identifier
       schema="http://www.hitachi.com/2008/XBRL">SAMP</xbrli:identifier>
     <xbrli:segment>
       <xbrldi:explicitMember dimension="p0:DistDim">p0:Tokyo</xbrldi:explicitMember>
       <xbrldi:explicitMember dimension="p0:ProductDim">p0:LC</xbrldi:explicitMember>
     </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
       <xbrli:instant>2008-09-30</xbrli:instant>
    </xbrli:period>
</xbrli:context>
 
<xbrli:context id="C02">
    <xbrli:entity>
     <xbrli:identifier
       schema="http://www.hitachi.com/2008/XBRL">SAMP</xbrli:identifier>
     <xbrli:segment>
       <xbrldi:explicitMember dimension="p0:DistDim">p0:Tokyo</xbrldi:explicitMember>
       <xbrldi:explicitMember dimension="p0:ProductDim">p0:Plasma</xbrldi:explicitMember>
     </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
       <xbrli:instant>2008-09-30</xbrli:instant>
    </xbrli:period>
</xbrli:context>