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 多次元データを含んだコンテキスト要素の追加で使用するクラスおよびインターフェース

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